from typing import Optional class Animal(object): """ Classe de base pour tous les animaux. """ pattes: int = None vertebre: Optional[bool] = None def manger(self): """ Méthode de base pour que l'animal mange. On ne définit aucun comportement particulier ici. """ print("Je suis un animal et je mange.") class Chien(Animal): """ Classe pour le chien. """ pattes: int = 4 vertebre = True def manger(self): """ Méthode pour faire manger le chien. """ super().manger() # Exécute le code ligne 19 print("Je dirais même plus *wouf* ! Je suis un chien qui mange.") class Escargot(Animal): """ Classe pour l'escargot. """ pattes: int = 0 vertebre = False def manger(self): """ Méthode pour faire manger l'escargot. """ print("Slurp *mange, mais on ne sait pas comment*") if __name__ == "__main__": # Créer des nouvelles instances d'animaux escargot = Escargot() chien = Chien() # Et voir comment ça se comporte quand on appelle la méthode `manger`. # Le fait que plusieurs classes héritant d'une autre classe ont des comportements # différents pour les mêmes méthodes s'appelle du polymorphisme. # Les méthodes peuvent aussi avoir des arguments différents mais le même nom. print(escargot.manger()) print(chien.manger())