首页 > 解决方案 > 为什么我的类的变量对于每个对象都不是唯一的?

问题描述

为什么对象b具有相同的变量a而不是唯一的变量?

class FOO: 
 
    def __init__(self):
         FOO.x = [3, 1]
         self.y = [9, 4] 
 
    def g(self):
         FOO.x[1] = FOO.x[1] + 7
         self.y *= 2
         return FOO.x + self.y 
 
a, b = FOO(), FOO() 
print(a.g()) 
print(a.g()) 
print(b.g())

为什么我会得到这个输出:

[3, 8, 9, 4, 9, 4]

[3, 15, 9, 4, 9, 4, 9, 4, 9, 4]

[3、22、9、4、9、4]

而不是这个?

[3, 8, 9, 4, 9, 4]

[3, 15, 9, 4, 9, 4, 9, 4, 9, 4]

[3, 8, 9, 4, 9, 4]

每个对象不是独一无二的吗?

标签: pythonpython-3.xclass

解决方案


FOO.x变量属于 FOO 类,而不是每个实例。因此,当您添加7to时FOO[1],您正在更改所有对象实例的值。


推荐阅读