python:从__new__返回值

时间:2010-09-01 05:38:54

标签: python constructor

修改

我实际上打电话给object.__new__(cls),我没有意识到通过这个我构建了一个类cls的对象!谢谢你指出这一点。

原始问题

文档说

  

如果()没有返回   cls的实例,然后是新的   实例的 init ()方法不会   被调用。

但是,当我从object.__new__()返回cls.__new__()时,仍然会调用__init__()。我不会认为对象的实例有资格作为cls的实例。我错过了什么?

1 个答案:

答案 0 :(得分:3)

无法重现您的观察结果:

>>> class cls(object):
...   def __new__(cls):
...     return object.__new__(object)
...   def __init__(self):
...     print 'in __init__'
... 
>>> x = cls()
>>> 

如您所见,cls.__init__未执行。

如何}(和btw,为什么是你? - )。