我試圖在python中實現最短路徑算法。當我嘗試連接路徑上的點時遇到了一些麻煩。Python類中的奇怪的東西?
我有一個名爲NODE 類我做這些節點的數組,然後創建這樣在他們新的節點:
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類中添加一個節點對象列表來連接它們。我遇到了一些問題,我認爲問題是遞歸類,所以要測試我做到了這一點。
連接是NODE類中的空白數組。
nodes[0].connections.append(0)
print nodes[0].connections
nodes[1].connections.append(1)
print nodes[1].connections
print nodes[0].connections
這是我發現問題的地方,也許我只是在愚蠢,或者它是語言的東西?不知道,但我想我會問。
的輸出是這樣的:
[0]
[0,1]
[0,1]
正如你可以看到,我只在索引中加入1-目的是連接列表然而,當我打印內容時,我看到兩個......這讓我感到困惑。
如果沒有看到包含實際的'NODE'類的[mcve],這真的很難回答。 – Kevin
讓我猜測,'class Node'有一個靜態字段'connections',而不是在構造函數中初始化'connections'到一個新列表,這樣所有對象都共享一個連接列表?請顯示你的Node類。 – dhke
我打算繼續說這是[可變默認參數]的副本(https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument)。 –