我是Python3的新手,我在数组中遇到重复元素的问题。假设我有这个例子:
class A:
arr1 = []
def __init__(self):
pass
def add(self, b):
self.arr1.append(b)
class B:
arr2 = []
def __init__(self):
pass
def add(self, val):
self.arr2.append(val)
所以A包含B的对象数组,B包含值数组。如果我添加这样的值:
a = A()
b1 = B()
b2 = B()
a.add(b1)
a.add(b2)
a.arr1[0].add(5)
a.arr1[0].add(6)
a.arr1[1].add(3)
然后打印输出如下:
for e in a.arr1:
for ee in e.arr2:
print(ee)
我得到输出:5 6 3 5 6 3,为什么它不仅仅是5 6 3?我无法弄清楚我错过了什么。感谢帮助。顺便说一句。我只针对这个特定问题(重复值)简化了代码。
答案 0 :(得分:2)
当你像这样声明B类时:
class B:
arr2 = []
...
然后arr2
是类级属性,这意味着它在对象之间共享。你想要做的是:
class B:
def __init__(self):
self.arr2 = []
这样,每个对象arr2
都不同。课程A
和arr1
也是如此。