MyPy 即使在测试所有案例时也会给出错误"Missing return statement"



我收到MyPy错误"缺少返回语句",即使我检查函数内所有可能的情况也是如此。

例如,在下面的代码中,MyPy仍然给了我一个错误"9: error: Missing return statement",即使color只能是Color.REDColor.GREENColor.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"

这个问题确实没有问题——mypy 目前确实是这样表现的。枚举支持是内置的,并且是初步的,并且有些临时。您正在寻找的检查类型可能会在将来实施。

但是,此代码是脆弱的;如果颜色发生变化,它将静默中断。请记住,Python 不是一种编译语言 - 类型检查器传递是可选的,其他人可能不会使用它。

IMO的正确方法是在末尾添加assert False。这也将使mypy保持沉默。

相关内容

最新更新