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

时间:2018-04-17 22:03:32

标签: python pyqt subclassing type-hinting mypy

我有一个继承QObject的类。 Everyting工作得很好,但当我运行mypy时,我收到错误:

from PyQt5.QtCore import QObject

class ServiceLocator(QObject):

    def __init__(self) -> None:
        super().__init__()
        ...

此刻我完全陷入困境。我一直在阅读mypy文档但无法找到错误的位置。

这里是代码:

#!/bin/sh

seen=0
for var in "$JAVA_OPTS" "$JAVA_TOOL_OPTIONS" "$SBT_OPTS"; do
  case $var in
    *Use*GC*) seen=1; break ;;
  esac
done

[ "$seen" = 0 ] && echo "-XX:+UseParallelGC"

干杯。

2 个答案:

答案 0 :(得分:1)

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

正如之前的评论所暗示的,错误的产生是因为mypy没有关于QObject的信息。我尝试将.pyi文件添加到来自https://github.com/Ultimaker/Uranium/tree/master/stubs/PyQt5的第三方文件夹中的mypy,或者您可以尝试从源PyQt5构建。

一切正常但是出现了很多其他错误,所以我最终决定在这一行使用#type:ignore并消除错误,直到这个库更好地支持类型提示。

干杯。

答案 1 :(得分:0)

如果mypy没有类的类型信息(在您的情况下由于缺少存根)并且您已启用--disallow-subclassing-any,则会发生此错误。您可以禁用此标记,添加输入信息,或者,如您所指出的,放置# type: ignore以使错误无效。