According to the docs,蟒蛇__new__ - 必须使用<code>super(currentclass, cls).__new__(cls[, ...])</code>适当的参数调用 超类的<code>__new__()</code>方法,然后修改 新创建的实例作为返回CLS的实例
典型实现创建该类的新实例必须在返回之前。
...如果
__new__
不返回CLS的实例,那么新 实例的__init__()
方法将不会被调用。
的simplest implementation of __new__
:
class MyClass:
def __new__(cls):
RetVal = super(currentclass, cls).__new__(cls)
return RetVal
究竟如何super(currentclass, cls).__new__(cls[, ...])
返回cls
类型的对象?
该声明调用object.__new__(cls)
其中cls
为MyClass
。
那么类object
如何知道如何创建MyClass
类型?
你*告诉*它返回的对象应该有什么类型。这就是'cls'参数的用途。 – user2357112
@ user2357112我没有得到你的答案。它期望的返回类型是'cls'。 'super(currentclass,cls).__ new __(cls)'如何返回一个'cls'?你是说它隐式地投射它? – Adrian
'object .__ new__'查看你通过它的'cls'参数,并说:“哎,我想阿德里安想要一个'cls'类型的对象,我应该制作其中的一个。 – user2357112