【发布时间】:2016-12-06 19:29:03
【问题描述】:
我正在尝试使用inspect 模块中的signature() 函数,根据我在某些Python 函数中提供的类型注释生成一些JavaScript。
当类型是简单的内置类时,这部分可以正常工作:
import inspect
def my_function() -> dict:
pass
signature = inspect.signature(my_function)
signature.return_annotation is dict # True
虽然我不确定如何打开和检查更复杂的注释,例如:
from typing import List
import inspect
def my_function() -> List[int]:
pass
signature = inspect.signature(my_function)
signature.return_annotation is List[int] # False
前向引用自定义类再次出现类似问题:
def my_function() -> List['User']:
pass
...
signature.return_annotation # typing.List[_ForwardRef('User')]
我想要得到的是这样的——所以我可以在生成 JavaScript 时适当地分支:
type = signature.return_annotation... # list
member_type = signature.return_annotation... # int / 'User'
谢谢。
【问题讨论】:
标签: python python-3.x annotations inspect type-hinting