我有一个 QObject 的子类。一切正常,但当我在上面运行 mypy 时,出现错误:
"error: Class cannot subclass 'QObject' (has type 'Any')"
此刻我完全陷入困境。我一直在阅读 mypy 文档,但找不到错误所在。
这里是代码:
from PyQt5.QtCore import QObject
class ServiceLocator(QObject):
def __init__(self) -> None:
super().__init__()
...
干杯。
当 mypy 没有类的类型信息(在您的情况下是由于缺少存根)并且您打开了
--disallow-subclassing-any
时,会发生此错误。您可以禁用此标志,添加键入信息,或者正如您所指出的,放置 # type: ignore
来消除错误。
为了留下我如何解决这个问题的记录,我将回答我自己的问题。
正如前面的评论所暗示的,出现错误是因为
mypy
没有关于 QObject
的信息。我尝试从 here将
.pyi
文件添加到第三方文件夹中的 mypy
,或者您可以尝试从源代码构建 PyQt5
。
一切正常,但出现了很多其他错误,所以我最终决定使用:
#type: ignore
在这一行上并消除错误,直到该库更好地支持类型提示。
干杯。
我的 mypy 也有类似的问题。 通过将 py.typed 添加到我自己的库(我从中导入基类)来修复。