Kurzer Kontext: Ich versuche, die Standardargumente einer Klasse zu ihrer __new__
Methode zu bearbeiten. Ich brauche Zugriff auf die Methode, und ich habe versucht, Zugriff auf die gleiche Weise zu erhalten, wie ich auf seine anderen Methoden zugegriffen habe - durch seine __dict__
.Warum ist die __new__ Methode einer Klasse nicht in ihrem __dict__?
Aber hier können wir sehen, dass seine __new__
Methode ist nicht in seiner __dict__
.
Ist das mit __new__
eine statische Methode? Wenn ja, warum sind diese nicht in der Klasse __dict__
? Wo sind sie im Objektmodell gespeichert?
class A(object):
def __new__(cls, a):
print(a)
return object.__new__(cls)
def f(a):
print(a)
....:
In [12]: A.__dict__['f']
Out[12]: <function __main__.A.f>
In [13]: A.__dict__['__new__']
Out[13]: <staticmethod at 0x103a6a128>
In [14]: A.__new__
Out[14]: <function __main__.A.__new__>
In [16]: A.__dict__['__new__'] == A.__new__
Out[16]: False
In [17]: A.__dict__['f'] == A.f
Out[17]: True
I‘ Ich bin mir nicht sicher, was Sie fragen. Warum denkst du 'A .__ dict __ ['__ new __']' ist 'object .__ new__'? – chepner
Guter Punkt. Ich habe die Frage bearbeitet. Die allgemeine Frage bleibt: Ich habe auch ein paar Zeilen Code hinzugefügt, die zeigen, dass sein '__new__' anders behandelt wird als seine' f' Methode – Maximilian
Das ist Python 3, richtig? – chepner