Вот очень простой код, который я сделал, чтобы продемонстрировать проблему, с которой я сталкиваюсь. Что здесь происходит, так это то, что я создаю два разных экземпляра одного и того же класса, но изменение атрибута одного изменяет соответствующий атрибут другого экземпляра. Я не знаю, почему это так. Является ли это обычным явлением на Python или я сталкиваюсь с чем-то, что полностью перепутано?Несколько экземпляров одного класса, перезаписываемых одновременно? (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)
Вот что программа выглядит как выходит из моей консоли:
>>>
X attributes:
60
Bar
Y attributes:
60
Bar
>>>
Я думаю, что это следовало бы сказать:
X attributes:
20
Foo
Y attributes:
60
Bar
Что я делаю неправильно?
Короткий ответ: Оба символа 'x' и' y' относятся к объекту класса 'exampleClass', а не к его экземплярам. Для создания экземпляров вам нужно вызвать объект класса, как в 'x = exampleClass()'. Впоследствии изменения атрибутов, которые вы делаете на 'x', будут влиять только на экземпляр, на который он ссылается. – martineau