Python 对象没有属性 类节点(对象): 定义初始值(自身,值): 自我价值=价值 self.left=无 self.right=无 类树(对象): 定义初始值(自身,值): 长度=长度(值) 节点=[] 对于范围内的x(长度): 追加(节点(值[x])) 对于范围内的x(长度): 如果2*x+1

Python 对象没有属性 类节点(对象): 定义初始值(自身,值): 自我价值=价值 self.left=无 self.right=无 类树(对象): 定义初始值(自身,值): 长度=长度(值) 节点=[] 对于范围内的x(长度): 追加(节点(值[x])) 对于范围内的x(长度): 如果2*x+1,python,Python,嗨,我是python和这个平台的新手。我想在我的python“Tree”类中实现DFS,但是shell说“Tree”对象没有属性“DFS”。但是,DFS是在我的代码中明确定义的。有人能帮我吗?非常感谢 执行代码时,我收到一条不同的错误消息: class Node(object): def __init__(self,value): self.value=value self.left=None self.right=None class

嗨,我是python和这个平台的新手。我想在我的python“Tree”类中实现DFS,但是shell说“Tree”对象没有属性“DFS”。但是,DFS是在我的代码中明确定义的。有人能帮我吗?非常感谢

执行代码时,我收到一条不同的错误消息:

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()

此错误消息是因为
Tree.DFS()
实际上并不总是显式返回任何内容(因此
None
被返回),并且
None
没有
值属性。

执行代码时,我会收到不同的错误消息:

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()

此错误消息是因为
Tree.DFS()
实际上并不总是显式返回任何内容(因此
None
被返回),并且
None
没有
属性。

我看不到您指出的问题。我从中得到一个错误:

    if node.value == obj:
AttributeError: 'NoneType' object has no attribute 'value'
AttributeError:“非类型”对象没有属性“值”


节点==None
返回
None
时,该节点不能/不具有
属性。

我看不到您指出的问题。我从中得到一个错误:

    if node.value == obj:
AttributeError: 'NoneType' object has no attribute 'value'
AttributeError:“非类型”对象没有属性“值”


节点==None
返回
None
时,它不能/没有
属性。

非常感谢您的即时回答!事实证明,我的sublime文本编辑器的缩进设置是错误的,因此函数DFS实际上没有定义为类树的方法。非常感谢你的帮助!顺便说一句,如何在评论框中输入灰色背景的代码?非常感谢您的即时回答!事实证明,我的sublime文本编辑器的缩进设置是错误的,因此函数DFS实际上没有定义为类树的方法。非常感谢你的帮助!顺便说一句,如何在评论框中输入灰色背景的代码?非常感谢您的即时回答!事实证明,我的sublime文本编辑器的缩进设置是错误的,因此函数DFS实际上没有定义为类树的方法。非常感谢你的帮助!顺便说一句,如何在评论框中输入灰色背景的代码?非常感谢您的即时回答!事实证明,我的sublime文本编辑器的缩进设置是错误的,因此函数DFS实际上没有定义为类树的方法。非常感谢你的帮助!顺便说一句,如何输入像你这样的代码,在注释框中有灰色背景?