python - 检查数据类的通用 python 类型

标签 python typing

对于给定的 python 代码:

from dataclasses import dataclass
import typing


@dataclass
class Foo:
    bar: str


T = typing.TypeVar("T")


@dataclass
class Bar(typing.Generic[T]):
    items: typing.List[T]


Buz = Bar[Foo]

如何使用 python 代码知道哪个 Buz 类具有泛型类型 Foo ?有没有检查方法?

最佳答案

使用typing_inspect模块允许:

import typing

import typing_inspect

T = typing.TypeVar("T")


class Gen(typing.Generic[T]):
    pass


print(typing_inspect.is_generic_type(Gen))  # True
print(typing_inspect.is_generic_type(Gen[int]))  # True
print(typing_inspect.get_args(Gen[int]))  # (<class int>,)

关于python - 检查数据类的通用 python 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487378/

相关文章:

python - 多对多保存 django

python - 如何在SVM中操作多维特征或者使用多维特征来训练模型?

python - 我从不同线程读取/写入 pandas dataframe 是否安全?

python - 为什么需要 virtualenv?

python - Pandas :将列的值分配到字典值设置的限制

python-3.x - 如何定义可订阅的 `NewType`,例如 `List[int]`

python - 运行时错误 : Expected object of scalar type Long but got scalar type Float for argument #2 'mat2' how to fix it?

python - 意外的 Numpy/Py3k 强制规则

python - 在类型别名中使用泛型

python - 使用文件强制转换和输入环境变量