小编Bob*_*ers的帖子

如果没有args调用__new__,为什么不调用__init__

我试图创建(不完全恢复)一个对象,该对象的属性保存在数据库中.所以,我不想打电话__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

7
推荐指数
2
解决办法
1346
查看次数

标签 统计

python ×1