2016-03-03 2 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 и этой платформе. Я хочу реализовать DFS в своем классе «Дерево» python, но оболочка говорит, что объект «Tree» не имеет атрибута «DFS». Тем не менее, DFS явно определен в моем коде. Кто-нибудь может мне с этим помочь? Спасибо заранее!Объект не имеет атрибутов

ответ

1

Выполнение кода, я получаю другое сообщение об ошибке:

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

Это сообщение об ошибке, потому что Tree.DFS() фактически не всегда возвращать ничего явно (и так None возвращается), и None не имеет a value атрибут.

+0

Большое спасибо за ваш мгновенный ответ! Оказывается, что параметр отступа от моего возвышенного текстового редактора был неправильным, поэтому функция DFS на самом деле не была определена как метод класса Tree. Большое спасибо за вашу помощь! Кстати, как вводить код, как ваш, который имеет серый фон в поле комментариев? –

+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 на самом деле не была определена как метод класса Tree. Большое спасибо за вашу помощь! Кстати, как вводить код, как ваш, который имеет серый фон в поле комментариев? –

Смежные вопросы