【发布时间】:2019-02-12 12:56:38
【问题描述】:
以下代码:
from typing import Union
def a() -> int:
return 1
def b() -> str:
return 'a'
def c(arg: str = 'a') -> Union[int, str]:
return {'a': a, 'b': b}[arg]()
触发以下 mypy 异常:
error: Incompatible return value type (got "object", expected "Union[int, str]")
一种解决方法是使用:
return a() if arg == 'a' else b()
在这种情况下,Mypy 不会抱怨,但如果有超过 2 个函数,字典语法仍然有用。 有没有办法解决它,或者它是一个 Mypy 错误?
【问题讨论】: