我是Python新手,我正在尝试使用函数将元素添加到对象拥有列表中。 这是我的代码的简化版本:
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没有被删除。 你能澄清一下我做错了什么吗? 感谢。
答案 0 :(得分:2)
如果您更改此TElement
,则应获得预期的输出:
class TElement:
def __init__(self):
self.vec = []
正如@delnan在评论中指出的那样,阅读其他答案,它解释得很清楚。
Why do attribute references act like this with Python inheritance?