【发布时间】:2021-03-12 07:04:13
【问题描述】:
所以方法看起来像这样:
def find_node(self, sym, root):
if root.symbol == sym:
print(root.__str__())
print(isinstance(root, Node))
return root
if root.l is not None:
self.find_node(sym, root.l)
if root.r is not None:
self.find_node(sym, root.r)
在一些递归调用之后,它找到了我们正在寻找的节点并返回它。在返回之前,检查 isinstance() 返回 True,所以它不是 NoneType 对象。
现在,获取结果的方法是:
def code_path(c_tree, sym):
node = c_tree.find_node(sym, c_tree.get_root())
print(isinstance(node, Node))
isinstance 方法返回 false - 节点实例为 NoneType。
当上一个方法返回的对象是正确类型之一时,我无法弄清楚 NoneType 对象是如何返回的。有什么想法吗?
【问题讨论】:
-
你所有的代码路径都应该是
return,而不仅仅是第一个if。 -
这能回答你的问题吗? Why does my recursive function return None?