此代码检查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
答案 0 :(得分:1)
我认为目前的答案是否。
这里有一些关于将其添加为功能的讨论:
https://github.com/python/mypy/issues/4019
但是看起来最近没有任何更新。如果您有很强的用例,并且可能会遇到什么错误,也许值得在此发表评论,即您是否希望该错误是因为您正在访问已初始化的变量,或者该变量未在其中初始化是类的init还是新的构造函数?
答案 1 :(得分:1)
我发现我可以通过定义Protocol
而不是常规的超类来获得我想要的大多数东西(在我的实际用例中):mypy
确实会检测到那里定义的未初始化的属性。