現在のコードでは、x
とy
はクラスレベルの属性です。私はそれらをインスタンスレベルの属性にしたいと思う。もしそうなら、__init__()
でそれらを設定:あなたは二度リストに同じcoor
を追加する場合
class Coordinates:
def __init__(self):
self.x = 0
self.y = 0
はもっと重要な、coor
のいずれかの変異は、「両方」の座標に反映されます(リストがちょうど保持されるので、リストの両方の位置で同じ基礎座標を参照)。たぶんあなたは2つの独立した座標インスタンスを作成する代わりに、このようなものを求めていますか?
list = []
list.append(Coordinates())
list.append(Coordinates())
あなたはこのコードを使用して、問題の実例を見ることができます:
c = Coordinates()
cs = []
cs.append(c)
cs.append(c)
for c in cs:
print id(c) # Both elements of the list refer to the same object.
出典
2016-12-05 02:51:47
FMc
あなたは二度リストに同じオブジェクトを追加しています。変更すると、両方のインデックスで変更されます。 –
'append'は同じオブジェクトを同じメモリ位置に作成していません。同じオブジェクトを明示的に追加しています。 –