我现在有一个这样的基类:
from abc import ABC, abstractmethod
class BaseClass(ABC):
@abstractmethod
def __init__(self, param1, param2):
self._param1 = param1
self._param2 = param2
@abstractmethod
def foo(self):
raise NotImplementedError("This needs to be implemented")
现在我有了一个抽象方法foo,我希望用户可以覆盖它。所以如果他们像这样定义一个类:
from BaseClassFile import BaseClass
class DerivedClass(BaseClass):
def __init__(self, param1, param2):
super().__init__(param1, param2)
所以在这里,方法foo没有在DerivedClass中被覆盖/定义,当我创建一个这种类型的对象时,它会抛出一个TypeError,但我想抛出一个NotImplementedError。我该怎么做。
当前错误:
TypeError:无法使用抽象方法前向示例化抽象类FF_Node
1条答案
按热度按时间ddhy6vgd1#
问题是你的错误
你的瞬间,你的瞬间,你的瞬间,你的瞬间。当一个方法被声明为
@abstractmethod
时,它必须在继承这个父类的类中有一个重写方法。否则,一旦创建子类的示例,python就会抛出一个错误。如果你想让你的代码抛出一个
NotImplementedError
,你需要删除@abstactmethod
装饰器。无法调用抽象方法。行
raise NotImplementedError()
不可能像@abstactmethod
那样log到达。