例:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'__call__的test '
__author__ = 'Zhang Shuai'
class A():
def __call__(self, value):
print(value,"被回调了")
def fun(self):
pass
a = A()
a(1)
之所以a(1)可以执行,是因为a是一个可调用对象,把一个实例变成可调用对象,只需要在类中定义__call__().
判断一个对象是否可调用可以用callable():
print(callable(a)) #True
print(callable(a.fun)) #True
print(callable({})) #False
print(callable([])) #False
print(callable("123")) #False