现在很清楚什么是元类,有一个相关的概念我一直都在使用,而并不知道它的真正含义。
我想每个人都在括号里犯了一个错误,导致了“对象不可调用”异常。而且,使用__init__并__new__导致怀疑这种血腥的__call__用途。
__init__
__new__
__call__
您能给我一些解释,包括魔术方法的例子吗?
可调用对象是可以调用的任何东西。
所述内置的可调用(PyCallable_Check在objects.c)检查该参数可以是:
PyCallable_Check在objects.c
具有__call__方法的类的实例或 是具有非null tp_call(c struct)成员的类型,该成员以其他方式指示可调用性(例如在函数,方法等中) 命名的方法__call__是(根据文档)
null tp_call(c struct)
当实例被“调用”为函数时调用
例
class Foo: def __call__(self): print 'called' foo_instance = Foo() foo_instance() #this is calling the __call__ method