可以通过下面的例子来学习一下什么样的对象是可以调用的:
# File: builtin-callable-example-1.py
def
dump(function):
if callable(function):
print(function, "is callable")
else:
print(function, "is *not* callable")
class
A:
def
method(self, value):
return value
class
B(A):
def
__call__(self, value):
return value
a = A()
b = B()
dump(0) # simple objects
dump("string")
dump(callable)
dump(dump) # function
dump(A) # classes
dump(B)
dump(B.method)
dump(a) # instances
dump(b)
dump(b.method)
输出结果如下:
== RESTART: D:/work/csdn/python_Game1/example/builtin-callable-example-1.py ==
0 is *not* callable
string is *not* callable
is callable
is callable
is callable
is callable
is callable
<__main__.a object="" at="" 0x0000021fde6f22b0="">is *not* callable
<__main__.b object="" at="" 0x0000021fde6f24a8="">is callable
<bound method A.method of <__main__.b object="" at="" 0x0000021fde6f24a8="">> is callable
>>>
在这里值得注意是A
和
B
对象都是可以调用的,但是
A
的实例对象不能调用,因为它没有实现
__call__
方法。
来源:
大坡3D
软件开发