0

我是 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 没有被删除。你能澄清我做错了什么吗?谢谢。

4

1 回答 1

2

如果你TElement这样改变,你应该得到你期望的输出:

class TElement:
    def __init__(self):
        self.vec = []

正如@delnan 在评论中指出的那样,请阅读另一个答案,它解释得很好。

为什么属性引用在 Python 继承中会这样?

于 2013-03-02T23:31:11.843 回答