PyCharm在必须抽象的子类上“必须实现所有抽象方法”

时间:2019-05-20 11:04:02

标签: python-3.x pycharm abstract-class abc

我有一个抽象基类// Child component props: { runSomeMethod: { type: Boolean, default: false } }, mounted() { if (this.runSomeMethod) { this.functionToRun(); } } methods: { functionToRun() { // some code } } // Parent <template> <child-component :run-some-method="true"> </child-component> </template>

Animal

现在我有另一个abc,它仅实现以下方法之一:

class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def move(self):
        raise NotImplementedError()

    @abc.abstractmethod
    def eat(self):
        raise NotImplementedError()

另一个实现缺少的方法的类:

class Bird(Animal):
    def move(self):
        print("fly")

但是当我有意让它保持抽象状态时,PyCharm抱怨class Eagle(Bird): def eat(self): print("eagle eats") “必须实现所有抽象方法”。

我是否缺少某些东西,或者这是一个错误?如果只是错误,我可以以某种方式忽略警告(类似于Bird)吗?

1 个答案:

答案 0 :(得分:1)

也将Bird也标记为抽象:

from abc import ABC

class Bird(Animal, ABC):
    def move(self):
        print("fly")

经过一番思考,实际上,我认为为此目的,像您最初那样指定metaclass=ABCMeta会更有意义,因为从概念上讲,我们不想修改{{ 1}},而是将其标记为一个抽象类(为了PyCharm的利益),也许这样做是一种更干净的方法。