Đây là một mã rất đơn giản mà tôi đã thực hiện để chứng minh vấn đề tôi đang gặp phải. Điều đang xảy ra ở đây là tôi đang tạo ra hai trường hợp khác nhau của cùng một lớp nhưng việc thay đổi một thuộc tính của một lớp sẽ thay đổi thuộc tính tương ứng của cá thể kia. Tôi không chắc tại sao lại như vậy. Đây có phải là bình thường trong Python hoặc tôi gặp phải một cái gì đó đang hoàn toàn sai lầm?Nhiều phiên bản của một lớp sẽ bị ghi đè cùng một lúc? (Python)
class exampleClass(object):
attribute1=0
attribute2="string"
x=exampleClass
x.attribute1=20
x.attribute2="Foo"
y=exampleClass
y.attribute1=60
y.attribute2="Bar"
print("X attributes: \n")
print(x.attribute1)
print(x.attribute2)
print("Y attributes: \n")
print(y.attribute1)
print(y.attribute2)
Dưới đây là những gì mà chương trình trông giống như sắp ra của giao diện điều khiển của tôi:
>>>
X attributes:
60
Bar
Y attributes:
60
Bar
>>>
Tôi nghĩ rằng nó nên nói:
X attributes:
20
Foo
Y attributes:
60
Bar
Tôi đang làm gì sai?
Câu trả lời ngắn gọn: Cả hai 'x' và' y' đều tham chiếu đến đối tượng lớp 'exampleClass', chứ không phải đối tượng của nó. Để tạo các cá thể, bạn cần gọi đối tượng lớp như trong 'x = exampleClass()'. Sau đó, các thay đổi thuộc tính mà bạn thực hiện đối với 'x' sẽ chỉ ảnh hưởng đến cá thể mà nó đề cập đến. – martineau