Ich habe einige Python üben. Ich habe eine Klasse erstellt und dann Instanzen dieser Klasse erstellt.Bereits erstellte Instanz der Klasse wird aktualisiert von setattr() python classmethod
Wenn ich der Klasse eine Klassenmethode hinzufüge, die die Klasse selbst mit einem neuen Attribut durch setattr() aktualisiert, erhalten die bereits instanziierten Objekte den neuen Wert. Ich bin ziemlich überrascht, wie die "älteren" Instanzen das neue Attribut erhalten, wenn sie bereits instanziiert wurden.
mir meinen Code Lassen Sie zeigen ...
class Me:
x=10
def __init__(self,y):
self.y=y
def mem(self):
return self.y
def __call__(self):
print ("I was Called")
@classmethod
def addnewprop(cls):
newproperty=4
setattr(cls,"new",newproperty)
die Operationen sind wie folgt,
>>>x=Me(9)
>>>y=Me(8)
>>>hasattr(x,"new")
>>>False
>>>Me.addnewprop()
>>>hasattr(x,"new")
True
>>>
Aufruf Me.addnewprop() macht auch die oben genannten Aufgaben die neue Eigenschaft dh erhalten (hasattr (x, "neu") gibt zurück true obwohl bereits instanziiert, warum verhält sich python so? Ich erwartete, dass die bereits definierten obj Ects behalten ihre Eigenschaften und nur neue erhalten die neue Eigenschaft.