Mar*_*nen 5 abstract-class abc pycharm python-3.x
我有一个抽象基类,Animal:
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
def move(self):
raise NotImplementedError()
@abc.abstractmethod
def eat(self):
raise NotImplementedError()
Run Code Online (Sandbox Code Playgroud)
现在我有另一个 abc 只实现了这些方法之一:
class Bird(Animal):
def move(self):
print("fly")
Run Code Online (Sandbox Code Playgroud)
另一个实现缺失方法的类:
class Eagle(Bird):
def eat(self):
print("eagle eats")
Run Code Online (Sandbox Code Playgroud)
但是 PyCharm 抱怨Bird它“必须实现所有抽象方法”,而我故意希望它保持抽象。
我错过了什么,还是这是一个错误?如果这只是一个错误,我可以以某种方式忽略警告#noqa吗(类似于)?
也只需标记Bird为摘要:
from abc import ABC
class Bird(Animal, ABC):
def move(self):
print("fly")
Run Code Online (Sandbox Code Playgroud)
经过一番思考后,实际上,我认为为此目的指定 更有意义metaclass=ABCMeta,就像您最初所做的那样,因为从概念上讲,我们不想修改 的继承层次结构Bird,而是将其标记为抽象类(为了 PyCharm 的利益),也许这是一种更干净的方法。
| 归档时间: |
|
| 查看次数: |
4616 次 |
| 最近记录: |