Python:获取类型 `typing.List`

标签 python

我已经将一个函数的参数注释为

import typing

def f(x: typing.List[MyType]):
    ...

通过检查参数参数,我得到了 x 的类型,它是 typing.GenericMeta 的一个实例,它被正确地打印为 typing.List [我的类型]

如何从该对象中获取ListMyType

最佳答案

如果想获取MyType,可以在.__args__下找到:

import typing

def f(x: typing.List[MyType]):
    ...

print(f.__annotations__["x"].__args__[0])  # prints <class '__main__.MyType'>

List(即 typing.List)可从 .__base__ 访问,实际列表类来自 .__orig_bases__:

print(f.__annotations__["x"].__base__)  # prints typing.List[float]
print(f.__annotations__["x"].__orig_bases__[0])  # prints <class 'list'>

关于Python:获取类型 `typing.List`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47077329/

相关文章:

python - 如何将变量插入文件路径?

python - 使用 Python (Pandas) 的新计算列的性能影响

python - pycharms 控制台使用什么 python 环境?

python - 从具有非数字索引的数据框中删除行

javascript - 这是在 GitHub Pages 上实现博客功能的好方法吗?

python交换和赋值

python - 创建一个 numpy 数组子类,其中所有形状更改操作都返回一个普通数组

python - 使用结构解析二进制文件中的数据

python - 如何不使用 __init__.py 作为 Flask 应用程序名称?

python - 两个 Pandas 数据帧之间的快速斯 PIL 曼相关性