Почему __init__ не вызывается, если __new__ вызывается без аргументов

Я пытаюсь создать (не совсем восстановить) объект, атрибуты которого сохранены в базе данных. Поэтому я не хочу вызывать __ init __ . Это желание, по-видимому, согласуется с предполагаемым использованием Гвидо для __ new __ . Я не понимаю, почему не вызывается __ init __ .

Возьмите следующий фрагмент, например, он возвращает экземпляр класса User без вызова __ init __ .

class User(object):
    def __init__(self, arg1, arg2):
        raise Exception

user = User.__new__(User)

print user

Это точное поведение хочу. Однако мой вопрос заключается в том, что я не понимаю, почему?

Согласно документации python __ init __ должен вызываться, когда __ new __ "возвращает экземпляр cls. "

Так почему же __ init __ даже не вызывается, хотя __ new __ возвращает экземпляр класса?

7
задан Bobby Chambers 2 August 2011 в 18:37
поделиться