2

我的代码:

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)

生产

[5]
[5]

即使没有任何东西添加到 b

4

3 回答 3

8

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

class Num:

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

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

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

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

于 2013-05-30T12:36:30.037 回答
4
class Num:
    nums = []

nums在类定义语句中定义一个nums类变量。而是在方法中定义它,__init__将其设置为实例的属性:

class Num:
    def __init__(self): # self is the instance
        self.nums = []  # setting nums on the instance
于 2013-05-30T12:37:33.417 回答
0

将您nums的空列表设为实例属性

class Num:

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

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

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

然后

a = Num()
b = Num()
a.add(5)
b.add(6)
print str(a)
print str(b)

[5]
[6]
于 2013-05-31T06:51:37.477 回答