类不能使用 mypy 子类化“QObject”(类型为“Any”)

Not*_*bad 6 python pyqt type-hinting subclassing mypy

我有一个继承 QObject 的类。一切正常,但是当我在其上运行 mypy 时,出现错误:

"error: Class cannot subclass 'QObject' (has type 'Any')" 
Run Code Online (Sandbox Code Playgroud)

此刻我完全被困住了。我一直在阅读 mypy 文档,但找不到错误所在。

这里的代码:

from PyQt5.QtCore import QObject

class ServiceLocator(QObject):

    def __init__(self) -> None:
        super().__init__()
        ...
Run Code Online (Sandbox Code Playgroud)

干杯。

eth*_*nhs 19

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


Not*_*bad 8

为了留下我如何解决这个问题的记录,我将回答我自己的问题。

正如前面的评论所暗示的,出现错误是因为mypy没有有关 的信息QObject。我尝试从此处.pyi将文件添加到mypy第三方文件夹中,或者您可以尝试从源构建。PyQt5

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

#type: ignore
Run Code Online (Sandbox Code Playgroud)

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

干杯。

  • “直到该库更好地支持类型提示” - 如果您确实拥有该库,您将如何修复它? (2认同)