Python 特殊方法__call__
在Python中,一个函数也是一个对象。
Python中一切皆对象,无论是数字,字符串,还是函数都是对象,甚至类本身也是元类type的对象。
任何对象,只要实现了__call__
方法,就可以视为一个函数。
Python是支持鸭子类型的动态语言。不关心实际类型,只关心是否有某一类型行为。
举个例子
>>> def foo(name):
... print(name)
...
>>> foo # 函数是 function类的对象
<function foo at 0x103c52048>
>>> foo('Tom') # 直接调用函数
Tom
>>> foo.__call__('Tom') # 等价于调用函数对象的__call__方法
Tom