Tôi là newbie python và biến thành viên của lớp hoạt động lạ trong mã python của tôi. một số công trình như biến bình thường, nhưng một số hoạt động như biến tĩnh!biến thành viên python của cá thể hoạt động như biến thành viên và một số hoạt động như biến tĩnh
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)
kết quả
0====
value : default
=====
1====
value : A
A
=====
2====
value : A
A
=====
3====
value : default
A
=====
nhưng kết quả cuối cùng của thử nghiệm là khác với những gì tôi mong đợi trong thử nghiệm cuối cùng. Không được có "A" trong 'list_value' của cá thể 'b'. Nó vừa được tạo và chưa bao giờ được thêm 'A' trước đây. Tôi đã thêm 'A' vào trường hợp 'a', không phải 'b'. Nhưng kết quả cho thấy rằng cũng có 'A' trong 'b' Hơn nữa, 'list_value' và 'value' trong lớp hoạt động khác nhau. Dường như cả hai đều có cùng cú pháp. tại sao chúng hoạt động khác nhau?
bản sao có thể có của [Tại sao thuộc tính lớp được ghi nhớ?] (Http://stackoverflow.com/questions/9713259/why-class-attribute-is-remembered) –