我有一个函数接受特定参数的某些文字:
from typing import Literal
def fn(x: Literal["foo", "bar", "foo|bar"]) -> None:
reveal_type(x)
第三个包含管道符号(
|
),"foo|bar"
。这被 mypy
解释为错误,因为名称 foo
未定义。
我猜发生这种情况是由于如何评估前向引用?我使用 Python 3.8:
from __future__ import annotations
有办法让这个工作成功吗?由于破坏了向后兼容性,我无法更改字符串,但目前,整个注释显示为
Any
,即它没有任何价值。
此错误现已修复。然而,更改尚未发布。