为什么类的变量对于每个对象不是唯一的?

时间:2019-06-21 18:44:49

标签: python python-3.x class

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

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,4,9,9,4,9,4]

     

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

不是这个吗?

  

[3、8、9、4、9、4]

     

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

     

[3、8、9、4、9、4]

每个对象不是唯一的吗?

1 个答案:

答案 0 :(得分:0)

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