Qué significa NotImplementedError y cómo solucionarlo
Referencia del error
NotImplementedError
Lenguaje
Severidad
BajaCuá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
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