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