Pythonでの変更クラスメンバー

tr244:

私は、クラスオブジェクトの配列のメンバーの値を変更しようとしているコードの小片を持っています。

class Test(object):
    def __init__(self):
        self.id = 0

test = []
temp = Test()

for i in range(5):
    temp.id = i
    test.append(temp)
    print(test[len(test)-1].id)

print()

for i in range(5):
    print(test[i].id)

しかし、私は次のような結果を得ていると私はその理由を把握することができませんでしよ?すべてのヘルプは大歓迎です。

0
1
2
3
4

4
4
4
4
4
EPH:

これは正常です。あなたは、各ステップで同じオブジェクトでのテストを満たし、あなたは、このオブジェクトを変更しています。あなたが変更を行うたびに、オブジェクトのすべての参照が変更されます。これを確認するには、各段階での一時のIDを印刷することができます

class Test(object):
    def __init__(self):
        self.id = 0

test = []

for i in range(5):
    temp = Test()
    temp.id = i
    test.append(temp)
    print(test[len(test)-1].id)

for i in range(5):
    print(test[i].id)

そして、出力は次のようになります。

0
1
2
3
4

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=377510&siteId=1