Aller au contenu

L'héritage

L'héritage

L'héritage permet de définir une classe à partir d'une classe existante. La classe dérivée réutilise les membres de la classe de base et peut ajouter ou adapter des comportements.

En Python, la classe de base est définie entre parenthèses après le nom de la classe :

class Animal:
    def __init__(self, name: str):
        self.name = name

    def speak(self) -> str:
        return "Un son"


class Dog(Animal):
    def __init__(self, name: str, breed: str):
        super().__init__(name)
        self.breed = breed

    def speak(self) -> str:
        return "Ouaf"

Dans cet exemple, la classe Dog hérite de la classe Animal. L'appel super().__init__(name) exécute l'initialisation implémentée dans la classe de base. Dans ce cas simple, il est comparable à l'appel d'un constructeur de base avec base(...) en C#.

La classe Dog redéfinit également la méthode speak. Python ne nécessite pas les mots-clés virtual et override pour permettre cette redéfinition comme en C#.

dog = Dog("Rex", "Labrador")

print(dog.name)     # Rex
print(dog.breed)    # Labrador
print(dog.speak())  # Ouaf

Contrairement à C#, Python autorise l'héritage multiple : une classe peut hériter de plusieurs classes. Ce mécanisme demande toutefois de bien comprendre l'ordre de résolution des méthodes.