您的位置:

提示NotImplementedError("Subclasses must define this method.")的解决方案

  发布时间:2023-04-02 11:03:32
报错的原因这是因为在 Django 中,你定义了一个抽象基类该类有一个没有实现的方法,并在派生类中未实现该方法。在 python 中当父类中的方法被定义为 `@abstractmethod` 时,子类在没有实现这个方法时就会抛出如何解决要解决这个错误,你需要在派生类中实现该方法。通过在派生类中实现该方法,提供默认的实现。如果你想保持抽象类的抽象性,在派生类中重新定义使用例子可以这样派生自 MyAbstractClass 并且实现了my_abstract_method,这样就不会出现了。

报错的原因

这是因为在 Django 中,你定义了一个抽象基类 (abstract base class),该类有一个没有实现的方法,并在派生类中未实现该方法。在 python 中当父类中的方法被定义为 `@abstractmethod` 时,子类在没有实现这个方法时就会抛出 `NotImplementedError("Subclasses must define this method.")` 。

如何解决

要解决这个错误,你需要在派生类中实现该方法。

通过在派生类中实现该方法,提供默认的实现。

如果你想保持抽象类的抽象性,在派生类中重新定义 @abstractmethod 。

使用例子

可以这样:


from abc import ABC, abstractmethod

class MyAbstractClass(ABC):

    @abstractmethod
    def my_abstract_method(self):
        pass

class MyConcreteClass(MyAbstractClass):

    def my_abstract_method(self):
        print("I am a concrete implementation of an abstract method")

MyConcreteClass 派生自 MyAbstractClass 并且实现了my_abstract_method,这样就不会出现 NotImplementedError 了。