如何在python中实际使用NotImplementedError?

2024-06-30 15:43:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有这样一个基类:

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

Tags: 方法fromimportself定义fooinitdef
1条回答
网友
1楼 · 发布于 2024-06-30 15:43:10

问题是,你的错误

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

一旦被抛出,你的Instance就被创建了。当方法声明为@abstractmethod时,继承此父类的类中必须有覆盖方法。否则,一旦创建了子类的实例,python就会抛出一个错误

如果希望代码抛出NotImplementedError,则需要删除@abstactmethod修饰符

无法调用抽象方法。行raise NotImplementedError()不可能像它是一个@abstactmethod一样以log的形式到达

相关问题 更多 >