【发布时间】:2021-11-28 18:49:43
【问题描述】:
我有以下代码
from typing import Union
def add(a: Union[int, str], b: Union[int, str]) -> str:
return str(a) + str(b)
a: int = 1
b: int = 2
out = add(a, b) # nice
a: str = 'one'
b: str = 'two'
out = add(a, b) # nice
a: int = 1
b: str = 'two'
out = add(a, b) # I hope the static check can raise error here when a and b are different types
我希望mypy 可以为第三种情况引发错误。我该怎么办?
【问题讨论】:
-
嗯,如果两个变量的类型相同,您可以手动检查函数,简单检查:
if type(a) == type(b): -
你想要一个类型变量。
from typing import TypeVar,那么你甚至可以约束它,所以你可以做到T = TypeVar("T", str, int)使用def add(a: T, b: T) -> T: ... -
@Grismar 这个问题是关于 mypy 的,所以它是针对静态分析的
标签: python type-hinting mypy python-typing