类无法使用 mypy

问题描述 投票:0回答:4

我有一个 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__()
        ...

干杯。

python pyqt subclassing type-hinting mypy
4个回答
19
投票

当 mypy 没有类的类型信息(在您的情况下是由于缺少存根)并且您打开了

--disallow-subclassing-any
时,会发生此错误。您可以禁用此标志,添加键入信息,或者正如您所指出的,放置
# type: ignore
来消除错误。


8
投票

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

正如前面的评论所暗示的,出现错误是因为

mypy
没有关于
QObject
的信息。我尝试从
here
.pyi
文件添加到第三方文件夹中的 mypy,或者您可以尝试从源代码构建
PyQt5

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

#type: ignore

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

干杯。


1
投票

这发生在我身上的一个完全打字的图书馆里。问题是这些对象没有在库内的

__all__
变量中定义为公共 (doc)


0
投票

我的 mypy 也有类似的问题。 通过将 py.typed 添加到我自己的库(我从中导入基类)来修复。

© www.soinside.com 2019 - 2024. All rights reserved.