经过一定数量的操作后,函数突然"is not defined"



在我的主方法中,当我尝试测试我的插入函数时,在三次插入后,该函数突然抛出一个错误,指出它未定义。

我真的不确定该怎么做。我的假设是,它与被封顶的函数的空间有关,因此编译器无法继续执行其余操作,

而不是继续。
class MerkleTree:
def __init__ (self, rootHash, rootNode):
self.rootHash = rootHash
self.rootNode = rootNode
root = MerkleTree(None, None)

class MerkleNode():
def __init__ (self, value, left, right, leafValue):
self.value = value
self.left = left
self.right = right
self.leafValue = leafValue
class Entry():  
def __init__ (self, key, value):
self.key = key
self.value = value  
class MerkleTreeInterface:
#recursive Insert Helper
def insertHelp(self, root, node):
if (root.rootNode.right != None):
insertHelp(root.rootNode.right, node)           
else:   
root.rootNode.right = node

#insert function, finds the appropriate available slot to insert data
def insert(self, key, value):
entry = Entry(key, value)
node = MerkleNode(value, None, None, entry)
if(root.rootNode == None):
root.rootNode = node
else:
if(root.rootNode.left == None):
root.rootNode.left = node
elif(root.rootNode.right == None):
root.rootNode.right = node
else:
insertHelp(root, node)  
class main():
tree = MerkleTreeInterface()
tree.insert("b", 2)
tree.insert("a", 1)
tree.insert("c", 3)
tree.insert("d", 4)

预期的结果是简单地插入所有内容(因此在这种情况下,当我遍历它时,列表应该是 [a,b,c,d](我只想要键(,但在第 4 次插入时,发生了错误。这是日志:

Traceback (most recent call last):
File "/Users/User/Desktop/temp.py", line 75, in <module>
class main():
File "/Users/User/Desktop/temp.py", line 81, in main
tree.insert("d", 4)
File "/Users/User/Desktop/temp.py", line 42, in insert
insertHelp(root, node)  
NameError: name 'insertHelp' is not defined
[Finished in 0.8s with exit code 1]
  • insertHelp方法中,insertHelp(root.rootNode.right, node)应该是self.insertHelp(root.rootNode.right, node)的。
  • insert方法中,应self.insertHelp(root, node)insertHelp(root, node)

执行以下命令时未收到此错误:

tree.insert("b", 2)
tree.insert("a", 1)
tree.insert("c", 3)

因为他们没有执行insertHelp(root, node).但:

tree.insert("d", 4)

尝试执行该语句,但出现错误。


由于insertHelp方法是一个实例方法,我们需要使用self.insertHelp来访问它。

搜索Python instance method vs Static method vs Class method以清楚地理解它。

最新更新