我试图教我自己的Python,来自C++,所以我决定尝试建立一个简单的BST。我设法让我的插入方法工作正常,但是我不知道为什么我的PrtTrutt方法失败。翻译给我的错误是:
Traceback (most recent call last): File "test.py", line 40, in myTree.printTree() File "test.py", line 23, in printTree printTree(self.left) NameError: global name 'printTree' is not defined
代码:
class Node(object):
def __init__(self, value):
self.value = value
self.left = self.right = None
def insert(self, node):
if self is None:
self = node
else:
if node.value <= self.value:
if self.left: insert(self.left, node)
else: self.left = node
else:
if self.right: insert(self.right, node)
else: self.right = node
def printTree(self):
if not self:
return
else:
printTree(self.left)
print(self.value)
printTree(self.right)
if __name__ == "__main__":
myTree = Node(3)
myTree.insert(Node(2))
myTree.insert(Node(4))
myTree.printTree()
我不能这样传递当前实例吗?在
方法中对
在C++中,默认范围是当前对象(^ {CD3>}),Python中不是这样的。无论我们处理的是全局函数还是方法,默认(非限定)范围都是相同的。在printTree
的递归调用应该是self.printTree()
。Python与C++的默认作用域不同!在相关问题 更多 >
编程相关推荐