这是我为演示我遇到的问题而编写的一个非常简单的代码。这里发生的事情是我正在创建同一个类的两个不同实例,但更改一个属性将更改另一个实例的相应属性。我不确定这是为什么。这在 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
我做错了什么?
最佳答案
当您需要实例属性时,您正在创建类属性。使用这个:
class exampleClass(object):
def __init__(self):
self.attribute1 = 0
self.attribute2 = "string"
此外,您没有创建 exampleClass 的任何实例,您需要这样:
x = exampleClass()
y = exampleClass()
您的代码只是为类使用新名称,并更改其属性。
关于python - 一个类的多个实例同时被覆盖? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217458/