【问题标题】:python - list assignment inside function [duplicate]python - 函数内部的列表分配[重复]
【发布时间】:2013-03-02 23:14:40
【问题描述】:

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

【问题讨论】:

    标签: python class variable-assignment


    【解决方案1】:

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

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

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

    Why do attribute references act like this with Python inheritance?

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 2013-06-17
      • 2018-02-09
      • 2019-11-17
      • 1970-01-01
      • 2016-10-18
      • 2012-08-18
      • 2016-06-11
      相关资源
      最近更新 更多