mypy 不明白该函数返回一个字符串

问题描述 投票:0回答:1

我有一个返回

str
或指定后备值(
str
None
)的函数。当给出
str
回退时,该函数保证返回
str
。然而,在此运行 mypy 会出现错误。

MWE:

from typing import Any


def f(x: str, fallback: str | None) -> str | None:
    if x.lower() == "yes":
        return "okay"
    return fallback


f("no", fallback="").lower()
f.py:10: error: Item "None" of "str | None" has no attribute "lower"  [union-attr]

如何告诉 mypy 在函数的返回值上调用

lower()
是安全的?

python mypy
1个回答
-1
投票

您需要调用来解释可能的空结果:

result = f("no", fallback="")

end = result.lower() if result is not None else result
© www.soinside.com 2019 - 2024. All rights reserved.