我想知道如何调用__init__()
方法。 __new__()
是否会调用它,或__call__()
在使用__new__()
或其他方式创建实例后调用它?
答案 0 :(得分:8)
Python确定__new__()是否应调用__init __():
如果覆盖了__new __()并且没有返回该类的实例,则如果__new __()返回cls的实例,那么将调用新实例的__init __()方法,如__init __(self [,...]),其中self是新实例,其余参数与被传递给__new __()。
__ init __()将不被调用。
在像函数一样调用实例对象时调用class MyObj:
def __call__():
print 'Called!'
>>> mo = MyObj()
>>> mo()
Called!
当然,您可以使用您想要的任何参数和逻辑来定义__call __()。
答案 1 :(得分:3)
__init__
http://docs.python.org/reference/datamodel.html#object.__init__