mypy 没有检测到未初始化的属性
mypy isn't detecting uninitialised attributes
此代码检查 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
不过最近好像没有更新。如果你有一个强大的用例来做这件事,也许值得在那里发表评论,以及你希望看到什么错误,即你希望错误是你正在访问一个初始化变量还是变量没有初始化class 初始构造函数还是新构造函数?
我发现我可以通过定义 Protocol
而不是常规超类来获得我想要的大部分内容(在我的真实世界的用例中):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
我认为目前答案是否定的。
这里有一些关于将此添加为功能的讨论:
https://github.com/python/mypy/issues/4019
不过最近好像没有更新。如果你有一个强大的用例来做这件事,也许值得在那里发表评论,以及你希望看到什么错误,即你希望错误是你正在访问一个初始化变量还是变量没有初始化class 初始构造函数还是新构造函数?
我发现我可以通过定义 Protocol
而不是常规超类来获得我想要的大部分内容(在我的真实世界的用例中):mypy
确实检测在那里定义的未初始化属性。