NotImplementedError

Python Erreur courante

Explication

`NotImplementedError` est une erreur **levée volontairement** pour signaler qu'une méthode doit être **implémentée par une sous-classe**, ou qu'une fonctionnalité n'est pas encore écrite. Ce n'est pas un bug accidentel : c'est un marqueur posé par le développeur. ```python class Forme: def aire(self): raise NotImplementedError("à implémenter dans la sous-classe") class Carre(Forme): pass # on a oublié de définir aire() Carre().aire() # NotImplementedError: à implémenter dans la sous-classe ```

Causes courantes

- **Appel d'une méthode abstraite** non redéfinie dans la sous-classe. - **Sous-classe incomplète** : une méthode obligatoire manque. - **Fonctionnalité « à faire »** marquée explicitement.

1. Implémentez la méthode dans la sous-classe

class Carre(Forme):
    def __init__(self, cote):
        self.cote = cote
    def aire(self):
        return self.cote ** 2   # ✅

2. Forcez l'implémentation avec abc

Une classe abstraite empêche même d'instancier une sous-classe incomplète :

from abc import ABC, abstractmethod

class Forme(ABC):
    @abstractmethod
    def aire(self): ...

class Carre(Forme):
    pass

Carre()   # TypeError immédiat : aire() non implémentée

Comment prevenir cette erreur

- **Utilisez `abc.ABC` + `@abstractmethod`** : l'erreur apparaît à l'instanciation, plus tôt et plus clairement. - **Documentez** les méthodes à implémenter dans la classe de base. - Référence : [docs.python.org — abc](https://docs.python.org/fr/3/library/abc.html).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Quelle différence entre `NotImplementedError` et `NotImplemented` ?
`NotImplementedError` est une **exception** que l'on lève. `NotImplemented` est une **valeur spéciale** renvoyée par les méthodes de comparaison (`__eq__`, `__add__`...) pour dire « je ne sais pas traiter ce type ». Ne les confondez pas.
Comment garantir qu'une sous-classe implémente bien une méthode ?
Déclarez la classe de base avec `ABC` et la méthode avec `@abstractmethod`. Python refusera alors d'instancier toute sous-classe qui ne la redéfinit pas.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.