__call__()的作用
这个方法是类中的一个特殊的实例方法。类似在类中重载了()
运算符,将对象名()
变为了对象名.__call__()
在Python
中凡是可以将()
直接应用到自身并执行的,称为可调用对象
,除了定义了该魔法函数的类之外,还有自定的函数,内置函数
class test(object):
def __init__(self,a):
self.a = a
self.b = 0
def __call__(self):
self.b = self.a*2
print(self.b)
t = test(3)
t()# 6,此处就是t.__call__()
同样作为可调用对象,对方法使用__call__
是和正常使用一样的
def print_(a):
print(a*2)
print_.__call__(3) #6
结论:在类中使用__call__
就是将类的实例对象变为可调用对象,实例可通过()
方式完成对模板类的__call__
的调用.非元类的所有类都是type
的实例
t = test(3)
这一步调用了test
的模板类type
的__call__
函数,创建对象完成构造函数,t()
调用自己的模板类test
的__call__
函数