python中callable什么意思_Python中的callable是基于什么样的机制实现的
如题,在Python中有这样的方法callable,判断一个对象是否可以调用。
callable(object)
中文说明:检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
看看源码
int
PyCallable_Check(PyObject *x)
{
if (x == NULL)
return 0;
if (PyInstance_Check(x)) {
PyObject *call = PyObject_GetAttrString(x, "__call__");
if (call == NULL) {
PyErr_Clear();
return 0;
}
/* Could test recursively but don't, for fear of endless recursion if some joker sets self.__call__ = self */
Py_DECREF(call);
return 1;
}
else {
return x->ob_type->tp_call != NULL;
}
}
其中
int PyInstance_Check(PyObject *obj)
Return true if obj is an instance.
判断是否为一个对象
对于最后一个else中
ternaryfunc PyTypeObject.tp_call
An optional pointer to a function that implements calling the object. This should be NULL if the object is not callable. The signature is the same as for PyObject_Call().
This field is inherited by subtypes.
指向函数的指针,用于callable检测
所以当用callable来检测一个类是否可调用,需要这个类有__call__,如果是一个方法,检测其tp_call。
两个比较
class a:
def __call__(slef):
pass
oa = a()
oa()
callable(oa)
结果为true
class b:
def _init__(self):
pass
ob=b()
callable(ob)
结果为false
python中callable什么意思_Python中的callable是基于什么样的机制实现的相关推荐
- python中demo什么意思_python中demo是什么
DEMO是"demonstration"的缩写.DEMO的中文含意为"示范"."展示"."样片"."样稿&qu ...
- python中函数的作用域_Python中的函数作用域
在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...
- python列表怎么写文件_python中以字典为元素的列表怎么写入文本文件
python如何将列表中的元素添加进字典纵然被命运的铁蹄狠狠践踏,也顽强地长出自己的根芽. 录入自己和另一个人的名字的汉语拼音简写,然后依据标识符中字母的数值两个人,一颗心,依偎的不是爱情而是那小温暖 ...
- python中赋值语句的作用_python中return可以使用赋值语句吗?
在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...
- python中round函数参数_python中关于round函数的小坑
round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10.0/3, 2) 3.33 >>> round(20/7) 3 第一个参数是 ...
- python里的join方法_python中join()方法介绍
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...
- python常用函数的用法_python中常用函数整理
1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...
- python中反斜杠_Python中的正斜杠/与反斜杠\
知识点: 1. "/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠 2. 对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠\. ...
- python中的元类_Python中的元类(metaclass)
提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...
- python中end 1 意思_python中“end=”是什么意思?_后端开发
c语言fopen函数的用法_后端开发 在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a" ...
最新文章
- iOS开发之打电话,发短信,发送邮件
- TensorFlow学习笔记(一)安装、配置、基本用法
- 全方面的了解超宽带信号高速采集记录回放系统
- 你还在用虚拟机,win10自带的linux还有图形界面(小白教程)
- 白天做安全,晚上去挖洞
- javascript 常用的数组操作
- 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」
- 11. 文件上传漏洞
- 【水果识别】基于matlab GUI形态学水果识别【含Matlab源码 1364期】
- XP 远程连接window 2008 网络级别身份验证问题解决方法
- 最新高级JAVA架构师之路(价值3万元+年薪百万计划)
- java日期格式化返回date_Java日期时间格式化操作DateUtils 的整理
- sd卡计算机无法读取数据,电脑突然无法读取sd的起因分析sd卡无法读取怎么修复...
- 点名器——随机数的应用
- 历史沿革:NFTs在以太坊上的发展之路
- centos6 安装redis
- opencv+nvcodec实现视频硬解码
- 分布式数据库中间件 MyCat 搞起来!
- 3D游戏编程与设计作业一
- python 解析下载的二进制Excel文件内容
热门文章
- iSAM1论文推导学习--第二节QR部分
- python计算机体系三层结构_python学习笔记-计算机结构、操作系统
- 广州电信高级前端开发工程师笔试题及答案(国企面试题大全)
- 【CF375C】Circling Round Treasures【XSY1176】大包子环绕宝藏【状压dp】
- 消费机 mysql_消费机软件主要构成
- 错误集(大概会持续更新)
- EC11编码器和单片机通信
- Java实现人民币大小写转换
- 基于单片机的超市储物柜设计_一种基于at89c51单片机的超市寄存装置的制造方法...
- Java——Java语言基础