python - 一个类的多个实例同时被覆盖? (Python)

标签 python class python-3.x instance

这是我为演示我遇到的问题而编写的一个非常简单的代码。这里发生的事情是我正在创建同一个类的两个不同实例,但更改一个属性将更改另一个实例的相应属性。我不确定这是为什么。这在 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/

相关文章:

python - 检查列表中是否已存在元素之间的差异

python - 数学错误 python - 尝试做简单的三角函数

c++ - 从const方法返回一对 vector 迭代器

python正则表达式,删除除撇号外的转义字符和标点符号

python - python中的安全属性分配

C++ Ifstream 转换为类对象数组

python-3.x - 如何为抽象类方法构造函数添加类型注释?

Python 类内存使用情况

python - 无法检查 celery 队列

python - 向 Seaborn 因子图添加简单的误差线