我想获取函数或类方法的注释。如果类型提示写在源代码中,那么我可以通过获取属性__annotations__
来获取类型。
def hoge(n: int): ...
print(hoge.__annotations__) # {'n': <class 'int'>}
但是我不知道如何获取在存根文件(.pyi(中写入的类型。
# .pyi
def fuga(n: int): ...
# .py
def fuga(n): ...
print(fuga.__annotations__) # {}
有什么很酷的方法吗?
来自 PEP-484:
存根文件是包含类型提示的文件,这些提示仅供类型检查器使用,而不是在运行时使用。存根文件有几种用例:
- 扩展模块
- 作者尚未添加类型提示的第三方模块
- 尚未为其编写类型提示的标准库模块
- 必须与 Python 2 和 3 兼容的模块
- 将注释用于其他目的的模块
因此,不幸的是,无法获取注释,并且如何解释它们由类型检查器自行决定。这有一个副作用,即没有权威资源来验证您的类型提示是否正确。
最接近的是mypy
.