python: 从__new__返回值
编辑
其实我调用了 object.__new__(cls)
,我没意识到这样做就创建了一个 cls 类的对象!谢谢你提醒我这一点。
原问题
文档上说:
如果 new() 没有返回 cls 的实例,那么新实例的 init() 方法就不会被调用。
但是,当我从 cls.__new__()
返回 object.__new__()
时,__init__()
还是被调用了。我不认为 object 的实例算是 cls 的实例。我到底漏掉了什么呢?
1 个回答
4
无法重现你的观察结果:
>>> class cls(object):
... def __new__(cls):
... return object.__new__(object)
... def __init__(self):
... print 'in __init__'
...
>>> x = cls()
>>>
正如你所看到的,cls.__init__
并没有被执行。
你是怎么调用 object.__new__
的?顺便问一下,你为什么要这么做呢?