-
触发条件:[对象] + ()就触发
__call__
的执行 class Person: def __init__(self,name): self.name=name def __call__(self, *args, **kwargs): print(args) print(kwargs) print(self.name+"触发了__call__") p1=Person("淘小欣") p1() #触发__call__的执行,里面有什么,就会执行什么 '''输出内容 () {} 淘小欣触发了__call__ ''' p1(2,3,4,5,5,name="吉吉") '''输出内容 (2, 3, 4, 5, 5) {'name': '吉吉'} 淘小欣触发了__call__ ''' # 2 一切皆对象 # Person 类,也是一个对象 Person()----->触发生成Person类的类的__call__,不是触发Person的__call__ # Person类生成的对象 --->p1()--->触发Person的__call__
在python中一切皆对象Person类也是一个对象,Persoon+()触发的是生成Person类的类里的
__call__
而Person类生成的对象+()触发的才是Person类的
__call__
-
__call__
的应用:flask源码中使用了它