Lingua-e
← Errores
Python

Qué significa NotImplementedError y cómo solucionarlo

Referencia del error

NotImplementedError

Lenguaje

Python

Severidad

Baja

Cuándo ocurre

Un NotImplementedError es lanzado deliberadamente por un desarrollador para indicar que un método o función aún no ha sido implementado.

Posibles soluciones

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.

Errores relacionados

Más detalles

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.

Posibles soluciones

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.

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ó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!

Practica en inglés

¿Cómo le explicarías un NotImplementedError a un compañero dev? Elige la frase correcta:

"I hit an error...

¿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