python: возвращаемое значение из __new__ - PullRequest
0 голосов
/ 01 сентября 2010

EDIT

Я на самом деле позвонил object.__new__(cls), и я не понял, что этим я построил объект класса cls! Спасибо, что указал мне на это.

ОРИГИНАЛЬНЫЙ ВОПРОС

В документации написано

Если new () не возвращает экземпляр cls, затем новый метод init () экземпляра не будет быть призванным.

Однако, когда я возвращаю object.__new__() из cls.__new__(), __init__() все еще вызывается. Я бы не стал рассматривать экземпляр объекта как экземпляр класса cls. Чего мне не хватает?

1 Ответ

3 голосов
/ 01 сентября 2010

Невозможно воспроизвести ваше наблюдение:

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

Как видите, cls.__init__ не выполняется.

Как вы звоните object.__new__ (иКстати, почему ты? -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...