如果您只是尝试创建泛型类或函数,请尝试查看mypy-
lang.org上有关泛型类型的文档-它相当全面,比标准库键入文档更详细。
如果您要实现自己的特定示例,则需要指出类型别名可以与typevars一起使用-您可以简单地执行以下操作:
from typing import Union, TypeVar, TupleT = TypeVar('T')MaybeWrapped = Union[T, Tuple[T]]def foo(x: int) -> MaybeWrapped[str]: if x % 2 == 0: return "hi" else: return ("bye",)# When running mypy, the output of this line is:# test.py:13: error: Revealed type is 'Union[builtins.str, Tuple[builtins.str]]'reveal_type(foo(3))但是,如果您试图用一种全新的语义来构造一个泛型类型,那么您很可能会走运。您剩余的选择是:
- 构造某种自定义类/元类的东西,符合PEP 484的类型检查器 可以 理解和使用。
- 修改您以某种方式使用的类型检查器(例如,mypy具有实验性的“插件”系统)
- 请修改PEP 484以包括您的新的自定义类型(您可以通过在键入模块repo中打开问题来完成此操作)。


![如何在Python中创建自己的“参数化”类型(如“ Optional [T]”)? 如何在Python中创建自己的“参数化”类型(如“ Optional [T]”)?](http://www.mshxw.com/aiimages/31/441271.png)
