【发布时间】:2019-10-06 17:57:08
【问题描述】:
我有一个抽象基类,Animal:
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
def move(self):
raise NotImplementedError()
@abc.abstractmethod
def eat(self):
raise NotImplementedError()
现在我有另一个只实现以下方法之一的 abc:
class Bird(Animal):
def move(self):
print("fly")
另一个实现缺失方法的类:
class Eagle(Bird):
def eat(self):
print("eagle eats")
但是 PyCharm 抱怨 Bird 它“必须实现所有抽象方法”,而我故意希望它保持抽象。
我错过了什么,还是这是一个错误?如果它只是一个错误,我可以以某种方式忽略警告(类似于#noqa)吗?
【问题讨论】:
-
这不是错误。抽象类的整个概念是强制子类实现所有方法。
-
@DeepSpace 那我的例子怎么样?我应该被允许拥有多个 abc 链。
标签: python-3.x pycharm abstract-class abc