如题,在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是基于什么样的机制实现的相关推荐

  1. python中demo什么意思_python中demo是什么

    DEMO是"demonstration"的缩写.DEMO的中文含意为"示范"."展示"."样片"."样稿&qu ...

  2. python中函数的作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

  3. python列表怎么写文件_python中以字典为元素的列表怎么写入文本文件

    python如何将列表中的元素添加进字典纵然被命运的铁蹄狠狠践踏,也顽强地长出自己的根芽. 录入自己和另一个人的名字的汉语拼音简写,然后依据标识符中字母的数值两个人,一颗心,依偎的不是爱情而是那小温暖 ...

  4. python中赋值语句的作用_python中return可以使用赋值语句吗?

    在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...

  5. python中round函数参数_python中关于round函数的小坑

    round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10.0/3, 2) 3.33 >>> round(20/7) 3 第一个参数是 ...

  6. python里的join方法_python中join()方法介绍

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...

  7. python常用函数的用法_python中常用函数整理

    1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...

  8. python中反斜杠_Python中的正斜杠/与反斜杠\

    知识点: 1. "/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠 2. 对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠\. ...

  9. python中的元类_Python中的元类(metaclass)

    提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...

  10. python中end 1 意思_python中“end=”是什么意思?_后端开发

    c语言fopen函数的用法_后端开发 在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a" ...

最新文章

  1. iOS开发之打电话,发短信,发送邮件
  2. TensorFlow学习笔记(一)安装、配置、基本用法
  3. 全方面的了解超宽带信号高速采集记录回放系统
  4. 你还在用虚拟机,win10自带的linux还有图形界面(小白教程)
  5. 白天做安全,晚上去挖洞
  6. javascript 常用的数组操作
  7. 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」
  8. 11. 文件上传漏洞
  9. 【水果识别】基于matlab GUI形态学水果识别【含Matlab源码 1364期】
  10. XP 远程连接window 2008 网络级别身份验证问题解决方法
  11. 最新高级JAVA架构师之路(价值3万元+年薪百万计划)
  12. java日期格式化返回date_Java日期时间格式化操作DateUtils 的整理
  13. sd卡计算机无法读取数据,电脑突然无法读取sd的起因分析sd卡无法读取怎么修复...
  14. 点名器——随机数的应用
  15. 历史沿革:NFTs在以太坊上的发展之路
  16. centos6 安装redis
  17. opencv+nvcodec实现视频硬解码
  18. 分布式数据库中间件 MyCat 搞起来!
  19. 3D游戏编程与设计作业一
  20. python 解析下载的二进制Excel文件内容

热门文章

  1. iSAM1论文推导学习--第二节QR部分
  2. python计算机体系三层结构_python学习笔记-计算机结构、操作系统
  3. 广州电信高级前端开发工程师笔试题及答案(国企面试题大全)
  4. 【CF375C】Circling Round Treasures【XSY1176】大包子环绕宝藏【状压dp】
  5. 消费机 mysql_消费机软件主要构成
  6. 错误集(大概会持续更新)
  7. EC11编码器和单片机通信
  8. Java实现人民币大小写转换
  9. 基于单片机的超市储物柜设计_一种基于at89c51单片机的超市寄存装置的制造方法...
  10. Java——Java语言基础