什么方法在Python类中调用`__init __()`

时间:2011-08-29 13:18:05

标签: python class methods

我想知道如何调用__init__()方法。 __new__()是否会调用它,或__call__()在使用__new__()或其他方式创建实例后调用它?

2 个答案:

答案 0 :(得分:8)

Python确定__new__()是否应调用__init __():

  

如果__new __()返回cls的实例,那么将调用新实例的__init __()方法,如__init __(self [,...]),其中self是新实例,其余参数与被传递给__new __()。

如果覆盖了__new __()并且没有返回该类的实例,则

__ init __()将被调用。

在像函数一样调用实例对象时调用

__call__()

class MyObj:
  def __call__():
    print 'Called!'

>>> mo = MyObj()
>>> mo()
Called!

当然,您可以使用您想要的任何参数和逻辑来定义__call __()。

答案 1 :(得分:3)

在对象的实例化时调用

__init__

http://docs.python.org/reference/datamodel.html#object.__init__