如何在Python中使用NotImplementedError?

xxhby3vn  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(131)

我现在有一个这样的基类:

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

ddhy6vgd

ddhy6vgd1#

问题是你的错误

TypeError: Can't instantiate abstract class FF_Node with abstract methods forward

你的瞬间,你的瞬间,你的瞬间,你的瞬间。当一个方法被声明为@abstractmethod时,它必须在继承这个父类的类中有一个重写方法。否则,一旦创建子类的示例,python就会抛出一个错误。
如果你想让你的代码抛出一个NotImplementedError,你需要删除@abstactmethod装饰器。
无法调用抽象方法。行raise NotImplementedError()不可能像@abstactmethod那样log到达。

相关问题