我在让mypy接受类型对象时遇到了一些麻烦。我是 我确信我做错了但是我的谷歌搜索到目前为止还没有让我得到任何答案。
Good
构建的内容类似于' Bad
'没问题,而像#error: Invalid type "test.Bad"
error: Bad? has no attribute "a"
'用mypy检查失败:
{{1}}
答案 0 :(得分:3)
基于mypy
wiki的Unsupported Python Features部分,目前不支持此类运行时创建。它无法理解函数定义中的Bad
。 1}}执行reveal_type(Good)
时使用reveal_type(Bad)
和mypy
应该明确这一点。
使用Any
来解决这些问题的方法。使用Python 3.6变量注释语法:
Bad: Any = type('Bad', (), {'a':1})
或者,使用Python< 3.6:
Bad = type('Bad', (), {'a':1}) # type: Any
(在两种情况下Any
应首先从typing
导入
当然,这基本上意味着你的功能现在接受任何东西。要付出的代价,但这就是你用动态语言得到的;因为Bar
是在运行时定义的,所以 理论上可以是任何东西: - )