栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Python:什么是callable?

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:什么是callable?

简单来说,Python中能被调用(called)的东西就是callable,例如function。使用内置的callable函数可以检查一个对象是不是callable。callable函数返回True说明是callable,返回False说明不是callable。

那么,Python中到底哪些东西是callable呢?有下面几种情况:

  • 函数(function)
  • 类
  • 有__call__ 方法的类的实例(instance)
  • 类的方法(method)

下面的代码实例展示了这几种情况:

# 函数是callable
def f():
    return 5


print(callable(f))  # True

f1 = f
print(callable(f1))  # True

# 数字不是callable
num = 5
print(callable(num))  # False


# 类是callable,如果类中有方法__call__,类的实例也是callable
class A:
    def __call__(self):
        print('This is A')


# This proves that class is callable
a = A()
print(callable(a))  # True
a()


# 如果类中没有方法__call__,类的实例不是callable
class B:
    def __init__(self):
        print("This is B")


b = B()


b()  # TypeError: 'B' object is not callable


# 类的方法是callable
class C:
    def m1(self):
        print('This is m1')


print(callable(C.m1))  # True
C().m1()

最后,还有一种是callable的情况,如果对象里有非空的tp_call成员(c语言结构体),这涉及到和C语言的互操作,这里不再展开,如果感兴趣可以参考Call Protocol — Python 3.10.4 documentation

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号