ost*_*ach 6 python type-hinting mypy
我收到一个 MyPy 错误“缺少返回语句”,即使我检查了函数内的所有可能情况。
例如,在下面的代码中,MyPy 仍然给我一个错误"9: error: Missing return statement",即使color只能是Color.RED, Color.GREEN, or Color.BLUE,我测试了所有这些情况!
class Color(enum.IntEnum):
RED: int = 1
GREEN: int = 2
BLUE: int = 3
def test_enum(color: Color) -> str:
if color == Color.RED:
return "red"
elif color == Color.GREEN:
return "green"
elif color == Color.BLUE:
return "blue"
Run Code Online (Sandbox Code Playgroud)
这个问题确实没有问题 - mypy 目前确实是这样的。枚举支持是内置的,并且是初步的并且有些临时的。您正在寻找的那种检查可能会在将来实施。
然而,这段代码很脆弱;如果颜色发生变化,它就会悄然破裂。请记住,Python 不是编译语言 - 类型检查器传递是可选的,其他人可能不会使用它。
assert FalseIMO的正确方法是在最后添加。这也会让 mypy 沉默。