Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果在没有参数的情况下调用了uuu new uuuuuu,为什么不调用uuu init uuuu_Python - Fatal编程技术网

Python 如果在没有参数的情况下调用了uuu new uuuuuu,为什么不调用uuu init uuuu

Python 如果在没有参数的情况下调用了uuu new uuuuuu,为什么不调用uuu init uuuu,python,Python,我正在尝试创建(不是完全还原)一个属性保存在数据库中的对象。因此,我不想调用\uuuu init\uuu。这一愿望似乎与我们的愿望是一致的。我不明白为什么\uuuuu init\uuuu没有被调用 以下面的代码段为例,它返回类User的实例,而不调用\uuuu init\uuuu class User(object): def __init__(self, arg1, arg2): raise Exception user = User.__new__(User) p

我正在尝试创建(不是完全还原)一个属性保存在数据库中的对象。因此,我不想调用
\uuuu init\uuu
。这一愿望似乎与我们的愿望是一致的。我不明白为什么
\uuuuu init\uuuu
没有被调用

以下面的代码段为例,它返回类User的实例,而不调用
\uuuu init\uuuu

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

user = User.__new__(User)

print user
<project.models.User object at 0x9e2dfac>
类用户(对象):
定义初始化(self,arg1,arg2):
引发异常
用户=用户。新用户(用户)
打印用户
这正是我想要的行为。然而,我的问题是,我不明白为什么

根据
\uuuu init\uuuu
\uuuu new\uuuuu
返回cls实例时应该调用


那么,为什么即使
\uuuuuuuuuuuuuuuuuuuuuuuuu
返回一个类实例,也没有调用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>。

构造函数(
用户()
)负责依次调用分配器(
用户。因为您通过直接调用
\uuuu new\uuu
绕过了通常的构造机制。
\uuuu init\uuuuuuu
-after-
\uuuu new\uuuuuuu
逻辑是
类型的。调用
(在CPython中,请查看
类型对象.c
,类型调用
函数),因此只有在执行
用户(…)
时才会发生这种情况,请发布实际运行的代码。你是说
def\uuuu init\uuuuu
?我遇到了同样的事情,并且发现python没有做到这一点。但是,文档明确指出“如果uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这是一个文档错误还是我误解了它?@UsAaR33你误解了它。调用
SomeClass(args)
将(通常)执行
instance=SomeClass.\uuuu new\uuuuuu(SomeClass,args)
,然后调用
instance.\uuuuu init\uuuuuuu(args)
如果
instance
SomeClass
的实例。文档在该序列的上下文中讨论的是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,而不是在调用它的任何时候,因为直接调用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu。