Lingua-e
Python

¿Qué significa NotImplementedError?

← Errores

Un NotImplementedError es lanzado deliberadamente por un desarrollador para indicar que un método o función aún no ha sido implementado. Se usa comúnmente en clases base abstractas para forzar que todas las subclases proporcionen su propia implementación de un método requerido.

Por qué ocurre

  • Una subclase hereda de una clase base pero olvida sobreescribir un método que lanza NotImplementedError.
  • Llamar a un método stub que fue agregado como marcador de posición durante el desarrollo.
  • Intentar usar un método de interfaz abstracta directamente en lugar de hacerlo a través de una subclase concreta.
  • Un método de una librería de terceros que está documentado como que requiere implementación en una subclase.

Ejemplos

Python

Código que causa el error

class Animal:
    def speak(self):
        raise NotImplementedError("Subclasses must implement speak()")

class Dog(Animal):
    pass  # forgot to implement speak()

dog = Dog()
dog.speak()

Error en la terminal

Traceback (most recent call last):
  File "app.py", line 9, in <module>
    dog.speak()
NotImplementedError: Subclasses must implement speak()

Cómo solucionarlo

Implementa el método requerido en tu subclase. Busca cada raise NotImplementedError en la clase base que estás extendiendo para saber qué métodos debes sobreescribir. Considera usar el módulo abc de Python (ABC y @abstractmethod) para obtener un error más temprano y claro al instanciar la clase en lugar de al llamar el método.

Código corregido

class Animal:
    def speak(self) -> str:
        raise NotImplementedError("Subclasses must implement speak()")

class Dog(Animal):
    def speak(self) -> str:
        return "Woof!"

dog = Dog()
print(dog.speak())  # Woof!

Errores relacionados

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis