Noch wichtiger, wenn jemand die Ausgabe des folgenden Codes erklären kann.Wie behandelt Python einen simultanen Verweis auf eine Variable über self und als Klassenattribut (statisch)?
class myclass:
num = 10
def mymethod(self):
print("PrevValue of self.num->",self.num)
print("Prev Value of myclass.num->",myclass.num)
self.num+=10
myclass.num+=20
print("PostValue of self.num->",self.num)
print("PostValue of myclass.num->",myclass.num)
obj1 = myclass()
obj2 = myclass()
obj2.mymethod()
obj1.mymethod()
Die Ausgabe des obigen Codes ist wie folgt.
('PrevValue of self.num->', 10)
('Prev Value of myclass.num->', 10)
('PostValue of self.num->', 20)
('PostValue of myclass.num->', 30)
('PrevValue of self.num->', 30)
('Prev Value of myclass.num->', 30)
('PostValue of self.num->', 40)
('PostValue of myclass.num->', 50)
Die Linie 7, das heißt self.num + = 10 scheint die vermeintliche Klassenattribut num, Bezug zu nehmen und einen Wert, der unter Verwendung selbst hinzufügen. In der nächsten Zeile wird auf dieselbe Variable als Klassenvariable zugegriffen. Es ist also vernünftig anzunehmen, dass die Variable sowohl als statische als auch als selbstvariable Variable verwendet wird. Wie kann eine Variable sowohl statisch als auch selbstvariabel sein? (Oder es ist etwas, das ich hier nicht fehlen könnte)
zu tun, wenn diese hinzugefügt werden sollten nach über den Codezeilen 'print (myclass.num) print (obj2.num) print (obj1.num) ' der Ausgang wäre: '50 40' –