According to the docs,Python __new__ - muss eine Instanz von cls zurückkehren
Typische Implementierungen eine neue Instanz der Klasse erstellen, indem der
__new__()
Methode der übergeordneten Klassesuper(currentclass, cls).__new__(cls[, ...])
mit entsprechenden Argumenten aufgerufen wird und dann Modifizierung der neu geschaffenen Instanz als notwendig, bevor Sie es zurückgeben.
...Wenn
__new__
eine Instanz von cls nicht zurückkehrt, dann wird die neue__init__()
Methode der Instanz nicht geltend gemacht werden.
Die simplest implementation of __new__
:
class MyClass:
def __new__(cls):
RetVal = super(currentclass, cls).__new__(cls)
return RetVal
Wie genau funktioniert super(currentclass, cls).__new__(cls[, ...])
cls
ein Objekt vom Typ zurückgeben?
Diese Anweisung ruft object.__new__(cls)
auf, wobei cls
MyClass
ist.
Also wie Klasse object
wissen, wie man den Typ MyClass
erstellen?
Sie * erzählten *, welcher Typ das zurückgegebene Objekt haben sollte. Dafür ist der Parameter 'cls' gedacht. – user2357112
@ user2357112 Ich bekomme Ihre Antwort nicht. Der Rückgabetyp, den es erwartet, ist "cls". Wie wird 'super (aktuelle Klasse, cls) .__ neue __ (cls)' eine 'cls' zurückgegeben? Sagst du, dass es implizit wirkt? – Adrian
'object .__ new__' schaut auf den 'cls'-Parameter, an den Sie ihn übergeben haben, und sagt:" Mensch, ich denke Adrian will ein Objekt vom Typ 'cls'. Ich sollte eins davon machen." – user2357112