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:

from abc import ABCMeta, abstractmethod

class Base(metaclass=ABCMeta):
	@abstractmethod
    def foo(self):
    	pass
        
    @abstractmethod
    def bar(self):
	    pass
class Concrete(Base):
	def foo(self):
    	pass
        
        # on ne déclare pas bar() volontairement 
assert issubclass(Concrete, Base)
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.