4.3 可调用对象
Python中可调用对象的定义包括显式地使用def语句创建函数。
它同时也包括了任何定义了call()方法的类。在Python 3 Object Oriented Programming中,我们可以看到一些这样的例子。如果要让这样的类成为更正规的可调用对象,我们应该让所有的可调用对象继承自collections.abc.Callable。
对于Python中的任何函数,我们都可以看到下面的操作。
>>>abs(3)
3
>>>isinstance(abs, collections.abc.Callable)
True
内置的abs()函数是一个collections.abc.Callable的实现。对于我们自定义的函数,这条规则也适用,请看下面的例子。
>>>def test(n):
… return n*n
…
>>>isinstance(test, collections.abc.Callable)
True
所有的函数都认为自己属于Callable类。这样做有助于简化参数的类型检查,同时也能够记录更有意义的调试信息。
在第5章“可调用对象和上下文的使用”中,我们会详细介绍可调用对象的细节。
