如何在Python中在运行时从存根文件(.pyi)中获取类型注释?

时间:2017-08-23 02:52:20

标签: python python-3.x type-hinting

我想在函数或类方法中获取注释。如果类型提示是在源代码中编写的,那么我可以通过获取属性__annotations__来获取类型。

def hoge(n: int): ...
print(hoge.__annotations__)  # {'n': <class 'int'>}

但我不知道如何在存根文件(.pyi)中编写类型。

# .pyi
def fuga(n: int): ...

# .py
def fuga(n): ...
print(fuga.__annotations__)  # {}

有没有很酷的方法?

1 个答案:

答案 0 :(得分:1)

来自PEP-484

  

存根文件是包含类型提示的文件,仅供类型检查程序使用,而不是在运行时使用。存根文件有几种用例:

     
      
  • 扩展模块
  •   
  • 作者尚未添加类型提示的第三方模块
  •   
  • 尚未编写类型提示的标准库模块
  •   
  • 必须与Python 2和3兼容的模块
  •   
  • 将注释用于其他目的的模块
  •   

所以不幸的是,没有办法获得注释以及如何解释它们由类型检查器自行决定。这有副作用,没有权威资源来验证你的类型提示是否正确。

最接近mypy