1.__call__
对象通过提供__call__(self, *args ,**kwargs)方法可以模拟函数的行为,如果一个对象x提供了该方法,就可以像函数一样使用它,也就是说x(arg1, arg2...) 等同于调用x.__call__(self, arg1, arg2)
class Foo(object):
def __call__(self):
pass
f = Foo() #类(),即执行元类的__call__
f() #对象(),即执行Foo的__call__
这里的对象指可调用对象(callable),我们平时自定义的函数、内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都可称之为可调用对象,判断对象是否为可调用对象可以用函数 callable。
如果在类中实现了 __call__ 方法,那么实例对象也将成为一个可调用对象。
网友评论