我已将函数的参数注释为
import typing
def f(x: typing.List[MyType]):
...
通过检查参数参数,我得到x
的类型,typing.GenericMeta
的一个实例,正确地打印为typing.List[MyType]
如何从此对象获取List
和MyType
?
答案 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'>