Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使mypy中的泛型TypeVar成为非可选的?_Python 3.x_Mypy - Fatal编程技术网

Python 3.x 如何使mypy中的泛型TypeVar成为非可选的?

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]:

是否可以要求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]:
    return None

mapper(reveal_type(bad_function))

在本例中,
bad_函数
的类型为
def()->Union[builtins.int,None]
。我想要一种方法来限制
T
绑定到任何非可选的类型(即,不是带有
None
Union
),以便此代码段无法进行类型检查。其他检查器,如Typescript(和Kotlin的内置类型系统)默认支持此功能,因此我想知道是否也可以在mypy中执行此功能。我知道可以绑定
TypeVar
s,但我不知道在这种情况下绑定
t
的正确方法是什么。

这是否回答了您的问题?