Python:什么是callable?
简单来说,Python中能被调用(called)的东西就是callable,例如function。使用内置的callable函数可以检查一个对象是不是callable。callable函数返回True说明是callable,返回False说明不是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
更多推荐
已为社区贡献1条内容
所有评论(0)