此代码使用mypy
的默认调用进行检查:
class A:
myattr: str
class B(A):
otherattr: str
但是A().myattr
和B().myattr
都引发了一个属性错误:AttributeError: 'A' object has no attribute 'myattr'
有没有办法让mypy报告这个?
这是Python 3.7.2,mypy 0.670
我认为目前的答案是否定的。
关于在此处添加此功能有一些讨论:
https://github.com/python/mypy/issues/4019
但最近似乎没有任何更新。如果你有一个强大的用例,并且你期望看到什么错误,也就是你希望错误是你正在访问一个初始化变量或者该变量未在init类或新构造函数?
通过定义Protocol
而不是常规超类,我发现我可以获得我想要的大部分内容(在我的真实世界用例中):mypy
确实检测到那里定义的未初始化属性。