我试图创建(不完全恢复)一个对象,该对象的属性保存在数据库中.所以,我不想打电话__init__.这种欲望似乎符合Guido的预期用途__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>
Run Code Online (Sandbox Code Playgroud)
这是我想要的确切行为.但是,我的问题是我不明白为什么?
根据python docs __init__应该在__new__"返回cls实例" 时被调用.
那么为什么__init__甚至不被调用,即使__new__返回一个类实例?
python ×1