我的代码:
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
答案 0 :(得分:8)
因为nums是一个类属性而不是实例属性。
class Num:
def __init__(self):
self.nums = []
def add(self, num):
self.nums.append(num)
def __str__(self):
return str(self.nums)
像这样实现它将显示您期望的行为。
答案 1 :(得分:4)
class Num:
nums = []
在类定义语句中定义nums
使nums
成为一个类变量。通过将其设置为实例的属性来在__init__
方法中定义它:
class Num:
def __init__(self): # self is the instance
self.nums = [] # setting nums on the instance
答案 2 :(得分: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]