如何在Python中将唯一对象添加到列表中
我试图将对象添加到列表中,但当我打印该列表的元素时,会得到最后一个对象的属性如何在Python中将唯一对象添加到列表中,python,Python,我试图将对象添加到列表中,但当我打印该列表的元素时,会得到最后一个对象的属性 import random class Unit: arr = [] def __init__(self): self.arr.clear() for i in range(2): self.arr.append(random.randint(1, 100)) print("arr in Unit ", self.ar
import random
class Unit:
arr = []
def __init__(self):
self.arr.clear()
for i in range(2):
self.arr.append(random.randint(1, 100))
print("arr in Unit ", self.arr)
class SetOfUnits:
lst = []
def __init__(self):
self.lst.clear()
for i in range(3):
self.lst.append(Unit())
print("arr in SetOfUnits ", self.lst[i].arr)
p = SetOfUnits()
for i in range(3):
print(p.lst[i].arr)
我明白了:
arr in Unit [17, 16]
arr in SetOfUnits [17, 16]
arr in Unit [98, 20]
arr in SetOfUnits [98, 20]
arr in Unit [16, 39]
arr in SetOfUnits [16, 39]
[16, 39]
[16, 39]
[16, 39]
问题在于最后3行。看起来对象p.lst[0],p.lst[1],p.lst[2]指的是同一个对象,而不是不同的对象。
我想得到:
[17, 16]
[98, 20]
[16, 39]
你能帮我找出我做错了什么吗?在
\uuuu init\uuu
函数中定义你的列表
class Unit:
def __init__(self):
self.arr = []
self.arr.clear()
for i in range(2):
self.arr.append(random.randint(1, 100))
print("arr in Unit ", self.arr)
class SetOfUnits:
def __init__(self):
self.lst = []
self.lst.clear()
for i in range(3):
self.lst.append(Unit())
print("arr in SetOfUnits ", self.lst[i].arr)
按照这样做的方式,在类方面定义变量,需要实例方面的变量
请参阅:在
\uuuu init\uu
函数中定义列表
class Unit:
def __init__(self):
self.arr = []
self.arr.clear()
for i in range(2):
self.arr.append(random.randint(1, 100))
print("arr in Unit ", self.arr)
class SetOfUnits:
def __init__(self):
self.lst = []
self.lst.clear()
for i in range(3):
self.lst.append(Unit())
print("arr in SetOfUnits ", self.lst[i].arr)
按照这样做的方式,在类方面定义变量,需要实例方面的变量
请参阅:
lst
和arr
是类属性,而不是实例属性。lst
和arr
是类属性,而不是实例属性