2016-03-03 274 views
0
class Node(object): 
    def __init__(self,value): 
     self.value=value 
     self.left=None 
     self.right=None 

class Tree(object): 
    def __init__(self,values): 
     length=len(values) 
     node=[] 
     for x in range(length): 
      node.append(Node(values[x])) 
     for x in range(length): 
      if 2*x+1 < length: 
       node[x].left = node[2*x+1] 
      if 2*x+2 < length: 
       node[x].right = node[2*x+2] 
     if node[0] != None: 
      self.root = node[0] 
     else: 
      self.root = None 

    def DFS(self,node,obj): 
     if node == None or node.value == obj: 
      return node 
     else: 
      self.DFS(node.left,obj) 
      self.DFS(node.right,obj) 

def main(): 
    obj = raw_input("Please input a number you want to search: ") 
    tree = Tree(range(100)) 
    node = tree.DFS(tree.root,obj) 
    if node.value == obj: 
     print "I've done it!" 

if __name__ == "__main__": 
    main() 

您好,我是新來的Python和這個平臺。我想在我的python'Tree'類中實現DFS,但shell說'Tree'對象沒有屬性'DFS'。但是,我的代碼中明確定義了DFS。誰能幫我這個?提前謝謝了!對象沒有屬性

回答

1

執行你的代碼,我得到一個不同的錯誤信息:

if node.value == obj: 
AttributeError: 'NoneType' object has no attribute 'value' 

此錯誤消息是因爲Tree.DFS()實際上並不總是返回任何明確(因此None返回),和None沒有一個value屬性。

+0

非常感謝您爲您的即時回答!事實證明,這樣的功能,DFS實際上並沒有定義爲類樹的方法,我崇高的文本編輯器的縮進的設置是錯誤的。非常感謝您的幫助!順便說一句,如何輸入類似你的代碼,在評論框中有灰色背景? –

+0

有通過SO的文檔閱讀: http://stackoverflow.com/help/formatting – acdr

1

我無法看到你的狀態的問題。我得到這樣的錯誤:

def DFS(self,node,obj): 
    if node == None or node.value == obj: 
     return node 

AttributeError: 'NoneType' object has no attribute 'value'

node == None它返回None,不能/不會有value屬性。

+0

非常感謝您爲您的即時回答!事實證明,這樣的功能,DFS實際上並沒有定義爲類樹的方法,我崇高的文本編輯器的縮進的設置是錯誤的。非常感謝您的幫助!順便說一句,如何輸入類似你的代碼,在評論框中有灰色背景? –