Python 3.x 如何使mypy中的泛型TypeVar成为非可选的?
是否可以要求mypy中的Python 3.x 如何使mypy中的泛型TypeVar成为非可选的?,python-3.x,mypy,Python 3.x,Mypy,是否可以要求mypy中的TypeVar仅解析为非可选类型?例如 from typing import Callable, Optional, TypeVar from typing_extensions import Protocol T = TypeVar('T') def mapper(callabl: Callable[..., T]) -> T: return callabl() def bad_function() -> Optional[int]:
TypeVar
仅解析为非可选类型?例如
from typing import Callable, Optional, TypeVar
from typing_extensions import Protocol
T = TypeVar('T')
def mapper(callabl: Callable[..., T]) -> T:
return callabl()
def bad_function() -> Optional[int]:
return None
mapper(reveal_type(bad_function))
在本例中,bad_函数
的类型为def()->Union[builtins.int,None]
。我想要一种方法来限制T
绑定到任何非可选的类型(即,不是带有None
的Union
),以便此代码段无法进行类型检查。其他检查器,如Typescript(和Kotlin的内置类型系统)默认支持此功能,因此我想知道是否也可以在mypy中执行此功能。我知道可以绑定TypeVar
s,但我不知道在这种情况下绑定t
的正确方法是什么。这是否回答了您的问题?