为什么我的Python实例被共享?

Hoa*_*Hoa 2 python

我的代码:

class Num:

    nums = []

    def add(self, num):
        self.nums.append(num)

    def __str__(self):
        return  str(self.nums)

a = Num()
b = Num()
a.add(5)
print str(a)
print str(b)
Run Code Online (Sandbox Code Playgroud)

产生

[5]
[5]
Run Code Online (Sandbox Code Playgroud)

即使b没有添加任何内容

auk*_*ost 8

因为nums是类属性而不是实例属性.

class Num:

    def __init__(self):
        self.nums = []

    def add(self, num):
        self.nums.append(num)

    def __str__(self):
        return  str(self.nums)
Run Code Online (Sandbox Code Playgroud)

像这样实现它将显示您期望的行为.