关于类:python-函数内的列表赋值

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。你能解释一下我做错了什么吗?谢谢。


如果您这样更改TElement,您应该得到预期的输出:

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

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

为什么属性引用在Python继承中的作用是这样的?