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

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


幕布斯7119047
浏览 164回答 2
2回答

拉风的咖菲猫

我认为目前的答案是否定的。有一些关于在此处添加此功能的讨论:https://github.com/python/mypy/issues/4019不过最近好像没什么更新。如果您有一个强大的用例来做这件事,也许值得在那里发表评论,以及您希望看到什么错误,即您希望错误是您正在访问一个已初始化的变量还是该变量未在类 init 或 new 构造函数?

慕神8447489

我发现我可以通过定义一个Protocol而不是一个常规的超类来获得大部分我想要的(在我的实际用例中):mypy确实检测在那里定义的未初始化的属性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python