python - list assignment inside function
本问题已经有最佳答案,请猛点这里访问。
我不熟悉python,我尝试使用一个函数将元素添加到一个对象拥有的列表中。以下是我的代码的简化版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class TElement: vec = [] class GTop: ElList = [] def AddElement(self, vect): NewEl = TElement() for i in range(len(vect)): NewEl.vec.append(vect[i]) self.ElList.append(NewEl) myvec1 = ["a",1,2,"b"] myvec2 = ["a","c",2,"b"] Mytop = GTop() Mytop.AddElement(myvec1) Mytop.AddElement(myvec2) |
通过上面的代码,我得到:
mytop.ellist[0].vec=['a',1,2,'b']
mytop.ellist[1].vec=['a',1,2,'b'、'a'、'c',2,'b']
当我想要:
mytop.ellist[0].vec=['a',1,2,'b']
mytop.ellist[1].vec=['a'、'c'、'2'、'b']
出于某种原因,当我退出addelement函数时,不会删除newel。你能解释一下我做错了什么吗?谢谢。
如果您这样更改
1 2 3 | class TElement: def __init__(self): self.vec = [] |
正如@delnan在评论中指出的,阅读另一个答案,它解释得很好。
为什么属性引用在Python继承中的作用是这样的?