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

问题描述 投票:1回答:2

此代码使用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

python mypy
2个回答
1
投票

我认为目前的答案是否定的。

关于在此处添加此功能有一些讨论:

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

但最近似乎没有任何更新。如果你有一个强大的用例,并且你期望看到什么错误,也就是你希望错误是你正在访问一个初始化变量或者该变量未在init类或新构造函数?


1
投票

通过定义Protocol而不是常规超类,我发现我可以获得我想要的大部分内容(在我的真实世界用例中):mypy确实检测到那里定义的未初始化属性。

© www.soinside.com 2019 - 2024. All rights reserved.