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 に答える