sono newbie python e la variabile membro di classe funziona in modo strano nel mio codice python. alcuni funzionano come una variabile normale, ma alcuni funzionano come variabili statiche!la variabile membro python di istanza funziona come variabile membro e alcuni funzionano come variabile statica
class Chaos:
list_value = []
value = "default"
def set_value(self, word):
self.list_value.append(word)
self.value = word
def show(self, num):
print(str(num) + "====")
print("value : " + self.value)
for st in self.list_value:
sys.stdout.write(st)
print("\n=====\n")
a = Chaos()
a.show(0)
a.set_value("A")
a.show(1)
b = Chaos()
a.show(2)
b.show(3)
risultato
0====
value : default
=====
1====
value : A
A
=====
2====
value : A
A
=====
3====
value : default
A
=====
ma l'ultimo risultato del test è diverso da quello che mi aspettavo in ultimo test. Non dovrebbe esserci "A" nel "list_value" dell'istanza di "b". E 'stato appena creato, e non è mai stato aggiunto' A 'prima. Ho aggiunto "A" all'istanza di "a", non "b". Ma il risultato mi mostra che ci sono anche 'A' in 'b' Inoltre, il 'list_value' e il 'valore' nella classe funziona in modo diverso. Sembra che entrambi abbiano la stessa sintassi. perché lavorano in modo diverso?
possibile duplicato di [Perché l'attributo di classe è stato ricordato?] (Http://stackoverflow.com/questions/9713259/why-class-attribute-is-remembered) –