Jestem nowym użytkownikiem Pythona, a zmienna składowa klasy działa dziwnie w moim kodzie Pythona. niektóre działają jak normalna zmienna, ale niektóre działają jak zmienna statyczna!zmienna składowa python działa jak zmienna składowa, a niektóre działają jak zmienna statyczna
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)
wynik
0====
value : default
=====
1====
value : A
A
=====
2====
value : A
A
=====
3====
value : default
A
=====
ale ostatni wynik badania jest różny od tego, co spodziewałem się w poprzednim teście. Nie powinno być "A" w "wartość_ listy" instancji "b". Zostało ono utworzone i nigdy wcześniej nie dodano "A". Dodałem "A" do instancji "a", a nie "b". Ale wynik pokazują, że są również "A" w "b" Co więcej, "wartość listy" i "wartość" w klasie działa inaczej. Wygląda na to, że obie mają tę samą składnię. dlaczego działają inaczej?
możliwy duplikat [Dlaczego atrybut klasy jest pamiętany?] (Http://stackoverflow.com/questions/9713259/why-class-attribute-is-remembered) –