Python:获取`typing.List`的类型

时间:2017-11-02 14:08:57

标签: python

我已将函数的参数注释为

import typing

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

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

如何从此对象获取ListMyType

1 个答案:

答案 0 :(得分:4)

如果您想获得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'>