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中fileno()方法的使用
May 24 Python
玩转python爬虫之正则表达式
Feb 17 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
对django中foreignkey的简单使用详解
Jul 28 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
Python configparser模块常用方法解析
May 22 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 Python
python读取mat文件生成h5文件的实现
Jul 15 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中取得URL的根域名的代码
2011/03/23 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
js对象的复制继承实例
2015/01/10 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
使用python绘制二维图形示例
2019/11/22 Python
Python hmac模块使用实例解析
2019/12/24 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
Python 去除字符串中指定字符串
2020/03/05 Python
python IDLE添加行号显示教程
2020/04/25 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
十八大闭幕感言
2014/01/22 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
环保宣传标语
2014/06/12 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
python接口测试返回数据为字典取值方式
2022/02/12 Python