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异常学习笔记
Feb 03 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
python字符串循环左移
Mar 08 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
Python多进程编程常用方法解析
Mar 26 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
PyQt5中QSpinBox计数器的实现
Jan 18 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递归方法实现无限分类实例代码
2014/02/28 PHP
php中stdClass的用法分析
2015/02/27 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
php微信公众号开发模式详解
2016/11/28 PHP
浅谈PHP的反射API
2017/02/26 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
js前端面试之同步与异步问题详解
2019/04/03 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
Python实现处理管道的方法
2015/06/04 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
pytorch 模型可视化的例子
2019/08/17 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
如何基于python测量代码运行时间
2019/12/25 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
毕业生多媒体设计求职信
2013/10/12 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
优秀员工获奖感言
2014/03/01 职场文书
团委副书记工作总结
2015/08/14 职场文书