0
点赞
收藏
分享

微信扫一扫

Python学习手记——可调用对象

可执行调用运算,并传递若干参数的对象称可调用对象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++类,亦称函数对象。

举报

相关推荐

0 条评论