这正是函数重载的目的。
简而言之,您可以执行以下 *** 作:
from typing import overload# ...snip...@overloaddef map_type(value: int) -> MyEnum: ...@overloaddef map_type(value: str) -> MyCustomClass: ...def map_type(value: Union[int, str]) -> Union[MyEnum, MyCustomClass]: if isinstance(value, int): return MyEnum(value) elif isinstance(value, str): return MyCustomClass(value) raise TypeError('Invalid input type')
现在,当您这样做时
map_type(3),mypy将了解返回类型为
MyEnum。
在运行时,唯一要实际运行的功能是最后一个功能-前两个功能被完全覆盖和忽略。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)