Python基于callable函数检测对象是否可被调用


Posted in Python onOctober 16, 2020

英文文档:

callable(object)

Return True if the object argument appears callable, False if not. If this returns true, it is still possible that a call fails, but if it is false, calling object will never succeed. Note that classes are callable (calling a class returns a new instance); instances are callable if their class has a __call__() method.

检测对象是否可被调用

说明:

1. 方法用来检测对象是否可被调用,可被调用指的是对象能否使用()括号的方法调用。

>>> callable(callable)
True
>>> callable(1)
False
>>> 1()
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
1()
TypeError: 'int' object is not callable
>>>

2. 可调用对象,在实际调用也可能调用失败;但是不可调用对象,调用肯定不成功。

3. 类对象都是可被调用对象,类的实例对象是否可调用对象,取决于类是否定义了__call__方法。

>>> class A: #定义类A
  pass

>>> callable(A) #类A是可调用对象
True
>>> a = A() #调用类A
>>> callable(a) #实例a不可调用
False
>>> a() #调用实例a失败
Traceback (most recent call last):
 File "<pyshell#31>", line 1, in <module>
  a()
TypeError: 'A' object is not callable


>>> class B: #定义类B
  def __call__(self):
    print('instances are callable now.')

    
>>> callable(B) #类B是可调用对象
True
>>> b = B() #调用类B
>>> callable(b) #实例b是可调用对象
True
>>> b() #调用实例b成功
instances are callable now.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用append合并两个数组的方法
Apr 28 Python
python排序方法实例分析
Apr 30 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
python装饰器实例大详解
Oct 25 Python
PyQt5每天必学之组合框
Apr 20 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
python匹配两个短语之间的字符实例
Dec 25 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
django连接oracle时setting 配置方法
Aug 29 Python
简单了解python元组tuple相关原理
Dec 02 Python
python collections模块的使用
Oct 16 #Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 #Python
Django实现随机图形验证码的示例
Oct 15 #Python
如何使用Python自动生成报表并以邮件发送
Oct 15 #Python
如何在Win10系统使用Python3连接Hive
Oct 15 #Python
Python进行特征提取的示例代码
Oct 15 #Python
Python通过递归函数输出嵌套列表元素
Oct 15 #Python
You might like
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
ECMAScript6--解构
2017/03/30 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
详解Python中的动态属性和特性
2018/04/07 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Python rstrip()方法实例详解
2018/11/11 Python
python生成n个元素的全组合方法
2018/11/13 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
Python 元组操作总结
2019/09/18 Python
详解python tkinter模块安装过程
2020/01/06 Python
python爬虫要用到的库总结
2020/07/28 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
中学教师管理制度
2014/01/14 职场文书
自动化专业职业生涯规划书范文
2014/01/16 职场文书
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
入党自我评价范文
2014/02/02 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
开发房地产协议书
2014/09/14 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
业务员岗位职责
2015/02/03 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
Python源码解析之List
2021/05/21 Python
深入理解redis中multi与pipeline
2021/06/02 Redis
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis