【问题标题】:Pycharm warning: must implement all abstract methodsPycharm警告:必须实现所有抽象方法
【发布时间】:2016-03-08 02:56:06
【问题描述】:

代码

class A(object):
    def a(self):
        raise NotImplementedError

class B(A):
    def a(self):
        return 7

class C(B):
    pass

为什么 Pycharm 会抱怨?

问题概要     C 类必须实现所有抽象方法

【问题讨论】:

  • pycharm 的哪个版本?
  • 我有版本 5.0.1

标签: python inheritance warnings pycharm


【解决方案1】:

这是一个已报告的错误 - 您可以在这里投票:https://youtrack.jetbrains.com/issue/PY-16132

【讨论】:

    【解决方案2】:

    正如预期的那样,python 本身承认 C 类的实例是有效的。所以我怀疑 PyCharm 中存在错误。

    谷歌搜索 PyCharm Bug Tracker 让我找到了https://youtrack.jetbrains.com/issues/PY

    果然有人提出了罚单。 https://youtrack.jetbrains.com/issue/PY-16132

    还没有修复

    【讨论】:

    • 截至此评论的时间戳未修复...2 年多后。超级难做代码审查。
    • 在 Pycharm 2019.3 CE 中似乎仍然被破坏。
    • 在 Pycharm 2020.2 专业版中似乎仍然存在问题
    【解决方案3】:

    我们可以按如下方式禁用此警告:

    • 转到首选项/设置 > 编辑器 > 检查
    • 搜索类必须实现所有抽象方法
    • 取消勾选,然后点击应用

    【讨论】:

      【解决方案4】:

      我发现该警告相关,因此我不会全局禁用它。您可以使用 # noqa 检测误报(错误警告),它应该使 PyCharm 警告静音:

      class MySerializer(serializers.Serializer):  # noqa
         pass
      

      注意:我没有找到更窄的警告/错误代码。

      【讨论】:

        猜你喜欢
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        相关资源
        最近更新 更多