私はPythonで最短経路アルゴリズムを実装しようとしていました。私はパス上のポイントを接続しようとしたときにいくつかの問題に遭遇しました。私はこれらのノードの配列を作った後、このようにそれらに新しいノードを作成したノード と呼ばれるクラス持っPythonクラスの奇妙なことは?
:
nodes = []
for r in range (0, 3):
for c in range (0, 3):
nodes.append(NODE(c*WIDTH/20 + 30, r*HEIGHT/20 + 30, 10))
これは罰金であるノードを作成したが、私はうまくそれらを描くことができます。
最初にノードオブジェクトのリストをNODEクラスに追加して接続しようとしました。私はいくつかの問題に遭遇した、私は問題が再帰的なクラスであると思ったので、私はこれをテストした。
connectionsは、NODEクラス内の空の配列です。
nodes[0].connections.append(0)
print nodes[0].connections
nodes[1].connections.append(1)
print nodes[1].connections
print nodes[0].connections
これは私が問題を見つけた場所です。たぶん私はばかだと思っていますか、それとも言語のことですか?ダニー、私は頼むと思った。
出力は次のとおりです、私はインデックスのみで接続リストに1つのオブジェクトを追加しました [0]
[0、1]
[0、1]
あなたが見ることができるように
1.しかし、私は内容を印刷するとき、私は2つを参照してください....そして、これは私を混乱させる。
これは、実際の 'NODE'クラスを含む[mcve]が表示されなくても、本当に答えにくいです。 – Kevin
私は、 'class Node'はコンストラクタの' connections'を新しいリストに初期化するのではなく、静的フィールド 'connections'を持っていて、すべてのオブジェクトが単一の接続リストを共有すると思いますか? 'Node'クラスを表示してください。 – dhke
私は先に進んで、これが[変更可能なデフォルト引数](https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument)の複製であると言うでしょう。 –