python - 打字问题
问题描述
嗨,我有二叉树和 2 个函数可以与他一起操作,但是当我运行 mypy --disallow-any-explicit --strict 时,我总是遇到不知道如何修复的错误
class Tree:
def __init__(self, value: str,
left: Optional['Tree'] = None,
right: Optional['Tree'] = None):
self.value = value
self.left = left
self.right = right
def to_rpn(tree: Tree) -> str:
result = ""
if tree.value != "+" and tree.value != "*":
return result + tree.value
return result + (to_rpn(tree.left) + " ") + (to_rpn(tree.right) + " ") + tree.value #*
def evaluate(tree: Tree) -> int:
if tree.value == "+":
return int(evaluate(tree.left)) + int(evaluate(tree.right)) #*
elif tree.value == "*":
return int(evaluate(tree.left)) * int(evaluate(tree.right)) #*
else:
return int(tree.value)
- = 参数 1 "to_rpn"/"evaluate" 具有不兼容的类型 "Optional[Tree]";预期的“树”(我在上面运行 mypy 时得到的错误)
我将非常感谢任何帮助,因为我花了最后 2 个小时试图解决它。谢谢!
解决方案
您用 表示空树None
,因此您的函数也必须接受一个Optional[Tree]
参数。
def to_rpn(tree: Optional[Tree]) -> str:
...
def evaluate(tree: Optional[Tree]) -> int:
...
推荐阅读
- python - Pip 的 Python 问题,缺少已安装的模块?
- javascript - html2pdf.js 和 Webpack 出现“未安装 jsPDF 画布插件”错误
- python - 从另一个主脚本调用时从一个 python 脚本获取退出消息
- c++ - 减少cuda内核运行时间:内核中矩阵的动态内存分配
- c# - 如何在代码中连接到打开 Wifi 点时捕获“打开登录门户”事件
- java - apache spark流与kafka和hive集成
- node.js - 如何使用 webpack 在不同项目中使用一个文件夹中的字体?
- python - XML ParseError:文档元素后的垃圾:自定义验证器(Wagtail)中的第 1 行第 11 列
- angular - 我想从 URL 中隐藏查询参数。我怎样才能达到同样的效果?
- unity3d - 使用 mrtk v2 RC1 构建统一项目的问题