一尘不染

Python-什么是“可呼叫”?

python

现在很清楚什么是元类,有一个相关的概念我一直都在使用,而并不知道它的真正含义。

我想每个人都在括号里犯了一个错误,导致了“对象不可调用”异常。而且,使用__init____new__导致怀疑这种血腥的__call__用途。

您能给我一些解释,包括魔术方法的例子吗?


阅读 443

收藏
2020-02-13

共1个答案

一尘不染

可调用对象是可以调用的任何东西。

所述内置的可调用(PyCallable_Check在objects.c)检查该参数可以是:

具有__call__方法的类的实例或
是具有非null tp_call(c struct)成员的类型,该成员以其他方式指示可调用性(例如在函数,方法等中)
命名的方法__call__是(根据文档)

当实例被“调用”为函数时调用

class Foo:
  def __call__(self):
    print 'called'

foo_instance = Foo()
foo_instance() #this is calling the __call__ method
2020-02-13