我正在编写一个函数,它接受type
类型的参数dtype
,如下所示。
def my_function(dtype: type):
pass
是否有办法限制的值仅从dtype
到str
和int
?类型联合str | int
不能完成这项工作,因为它将被解释为dtype
可以具有类型为的值。str
或int
,这不是情况。
另外,我可能不想断言dtype
的值,因为mypy
似乎不能很好地与它一起工作。
def my_function(dtype: type):
assert dtype == str or dtype == int
是否有解决这个问题的方法?
好的,我将把答案贴出来供将来参考。非常感谢胡安帕。到达维拉加的解决方案!
可以使用typing
模块中的泛型Type[T]
来引用文字类型,如下所示。
from typing import Type
def my_function(dtype: Type[str] | Type[int]):
pass
Or fromPython 3.9,builtins.type
现在支持type[T]
泛型,如PEP 585所述.
def my_function(dtype: type[str] | type[int]):
pass