可执行调用运算,并传递若干参数的对象称可调用对象callable
。如:
callable(argument1, argument2, argumentN)
- 函数
function
如函数f
def f(arg1, arg2, argN): ...
- 方法
method
如方法f
class C:
def f(self, arg1, arg2): ...
- 类
class
如类C
class C:
def __new__(cls, *args, **kwargs): ...
def __init__(self, arg1, arg2): ...
类调用时,会先调用方法__new__
(隐式静态)创建类实例。类作为首参传递,其余参数依次传递。而后,返回的类实例作为首参传递给方法__init__
,其余参数依次传递。
相当于C++的new
表达式效果
- 实现方法
__call__
的类的实例
class C:
def __call__(self, arg1, arg2): ...
当此种类实例被当作函数调用时,会调用其方法__call__
。即:
instance = C()
c(arg1, arg2)
如同:
instance = C()
type(instance).__call__(instance, arg1, arg2)
相当于重载了运算符operator()
的C++类,亦称函数对象。