Python Typing:类型文字



我正在编写一个函数,它接受type类型的参数dtype,如下所示。

def my_function(dtype: type):
pass

是否有办法限制的值仅从dtypestrint?类型联合str | int不能完成这项工作,因为它将被解释为dtype可以具有类型为的值strint,这不是情况。

另外,我可能不想断言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.9builtins.type现在支持type[T]泛型,如PEP 585所述.

def my_function(dtype: type[str] | type[int]):
pass

最新更新