mypy未检测到未初始化的属性

时间:2019-03-08 14:31:43

标签: python mypy

此代码检查mypy的默认调用:


class A:

  myattr: str


class B(A):
  otherattr: str

但是A().myattrB().myattr均引发属性错误:AttributeError: 'A' object has no attribute 'myattr'

有没有办法让mypy报告此事?

这是Python 3.7.2,mypy 0.670

2 个答案:

答案 0 :(得分:1)

我认为目前的答案是否。

这里有一些关于将其添加为功能的讨论:

https://github.com/python/mypy/issues/4019

但是看起来最近没有任何更新。如果您有很强的用例,并且可能会遇到什么错误,也许值得在此发表评论,即您是否希望该错误是因为您正在访问已初始化的变量,或者该变量未在其中初始化是类的init还是新的构造函数?

答案 1 :(得分:1)

我发现我可以通过定义Protocol而不是常规的超类来获得我想要的大多数东西(在我的实际用例中):mypy确实会检测到那里定义的未初始化的属性。