此代碼旨在創建圖形實現。但是,所有節點「self.children」鏈接到內存中的相同列表,因此將子節點添加到其中任何節點都會將其添加到所有節點中。我無法想象爲什麼會發生這種情況,我已經多次上過這樣的課,而且沒有這樣的問題。Python初始化默認值創建類的鏈接實例
我的意思是,僅僅因爲你在默認值中定義了一個列表並不意味着我在那裏做了一個列表,是嗎?這是混亂...
class DescisionNode(object):
def __init__(self,data,score,childs=[]):
self.data = data
self.score = score
self.parent = None
self.children = childs
def getTop(self):
if self.parent == None:
return self
else:
return self.parent.getTop()
def getEnds(self):
out = []
if len(self.children)==0:
return [self]
else:
print(self,self.children)
for n in self.children:
out += n.getEnds()
return out
def add(self, newNode):
if newNode.parent == None:
newNode.parent = self
else:
raise Exception("Parent already exists.")
if newNode is self:
raise Exception("self may not be child")
self.children.append(newNode)
考慮構建向前列表(下一個節點)比向後更容易(父節點) –