我有一个抽象基类// 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
)吗?
答案 0 :(得分:1)
也将Bird
也标记为抽象:
from abc import ABC
class Bird(Animal, ABC):
def move(self):
print("fly")
经过一番思考,实际上,我认为为此目的,像您最初那样指定metaclass=ABCMeta
会更有意义,因为从概念上讲,我们不想修改{{ 1}},而是将其标记为一个抽象类(为了PyCharm的利益),也许这样做是一种更干净的方法。