Pour être notifié dès l’instanciation d’une classe que des méthodes n’ont pas été implémentées on peut utiliser le module ABC (Abstract Base Classes).
On crée alors avec le module ABC une classe de base dont on va se servir pour dériver notre sous-classe. Dans la classe de base on créera des méthodes abstraites à implémenter dans la sous-classe.

Exemple:

1
2
3
4
5
6
7
8
9
10
from abc import ABCMeta, abstractmethod

class Base(metaclass=ABCMeta):
@abstractmethod
def foo(self):
pass

@abstractmethod
def bar(self):
pass
1
2
3
4
5
class Concrete(Base):
def foo(self):
pass

# on ne déclare pas bar() volontairement
1
assert issubclass(Concrete, Base)
1
2
3
c = Concrete()
TypeError:
"Can't instantiate abstract class Concrete with abstract methods bar"

Sans le module ABC n’avait pas été présent, on aurait obtenu NotImplementedError si une méthode non implémentée avait été appelée.
Avec ABC on est alerté dès l’instanciation de la classe que la méthode n’existe pas.