Class 无法使用 mypy 子类化 'QObject'(具有类型 'Any')

Class cannot subclass 'QObject' (has type 'Any') using mypy

我有一个 class 子 class 是 QObject。 Everyting 工作正常但是当我在上面 运行 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 没有关于 QObject 的信息。我尝试将 .pyi 文件添加到 here 的第三方文件夹中的 mypy,或者您可以尝试从 PyQt5.

来源构建

一切正常,但出现了很多其他错误,所以我最终决定使用:

#type: ignore

在此行上消除错误,直到此库更好地支持类型提示。

干杯。

当 mypy 没有 class 的类型信息(在您的情况下是由于缺少存根)并且您打开了 --disallow-subclassing-any 时,会发生此错误。您可以禁用此标志,添加键入信息,或者如您所指出的那样,放置 # type: ignore 来消除错误。