我目前有这样一个基类:
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 DerrivedClass(BaseClass):
def __init__(self, param1, param2):
super().__init__(param1, param2)
因此,这里的方法foo没有在derrived类中过度使用/定义,当我创建这种类型的对象时,它会抛出一个TypeError,但我想抛出一个NotImplementedError。我该怎么做呢
当前错误:
TypeError: Can't instantiate abstract class FF_Node with abstract methods forward
问题是,你的错误
一旦被抛出,你的Instance就被创建了。当方法声明为
@abstractmethod
时,继承此父类的类中必须有覆盖方法。否则,一旦创建了子类的实例,python就会抛出一个错误如果希望代码抛出
NotImplementedError
,则需要删除@abstactmethod
修饰符无法调用抽象方法。行
raise NotImplementedError()
不可能像它是一个@abstactmethod
一样以log的形式到达相关问题 更多 >
编程相关推荐