Я пытаюсь создать (не совсем восстановить) объект, атрибуты которого сохранены в базе данных.Поэтому я не хочу звонить __init__
.Это желание, по-видимому, согласуется с предполагаемым использованием Гвидо для __new__
.Я не понимаю, почему __init__
не вызывается.
Возьмем, к примеру, следующий фрагмент, он возвращает экземпляр класса User без вызова __init__
.
class User(object):
def __init__(self, arg1, arg2):
raise Exception
user = User.__new__(User)
print user
<project.models.User object at 0x9e2dfac>
Этоточное поведение, которое я хочу.Однако мой вопрос в том, что я не понимаю, почему?
Согласно документам на python __init__
должен вызываться, когда __new__
"возвращает экземпляр cls".
Так почему __init__
даже не вызывается, даже если __new__
возвращает экземпляр класса?