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 相关文章推荐
详解Django缓存处理中Vary头部的使用
Jul 24 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
python多线程实现TCP服务端
Sep 03 Python
使用Django搭建一个基金模拟交易系统教程
Nov 18 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
python相对企业语言优势在哪
Jun 12 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 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/12/24 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
$()JS小技巧
2007/07/21 Javascript
google地图的路线实现代码
2009/08/20 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
python中pycurl库的用法实例
2014/09/30 Python
python数组复制拷贝的实现方法
2015/06/09 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
python增加图像对比度的方法
2019/07/12 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
美国保健品专家:Life Extension
2018/05/04 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
什么是lambda函数
2013/09/17 面试题
大专生工程监理求职信
2013/10/04 职场文书
大四学生毕业自荐信
2013/11/07 职场文书
行政助理的职责
2013/11/14 职场文书
团员个人的自我评价
2013/12/02 职场文书
农村婚礼证婚词
2014/01/10 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
PHP中->和=>的意思
2021/03/31 PHP
python manim实现排序算法动画示例
2022/08/14 Python