我有一些 Python 源代码,想找出变量的类型。例如给定字符串
"""
greeting = "Hello"
"""
我想拥有get_type('greeting') == str
。或者更复杂的例子:
"""
def test(input: str):
output = len(input)
return str
"""
在伪代码中,我希望能够执行以下操作:
>>> m = parse_module()
>>> m.functions['test'].locals['output'].get_type()
int
似乎这应该可以在 Python 3 中使用类型注释和 MyPy,但我不知道如何。像 VS 代码这样的 IDE 已经非常擅长猜测 python 代码中的类型,这就是为什么我猜测必须有一种公开的方式来做到这一点。
似乎有一个模块typed-ast,它也被 MyPy 使用,这让我成为了其中的一部分。但是,这并没有类型推断或传播,它只是给了我据我所知的显式注释。MyPy 作为 api,但它只允许您运行检查器,并返回与命令行工具相同的错误消息。我正在寻找一种“接触”MyPy 的方法,并获取一些推断的信息——或者一些我没有想到的替代解决方案。