Aller au contenu

Héritage en Python

Comprendre l'héritage en Python

L'héritage est une fonctionnalité puissante en programmation orientée objet qui permet de créer de nouvelles classes à partir de classes existantes. En Python, l'héritage est implémenté à l'aide du mot-clé class, ce qui permet de créer une nouvelle classe comme enfant ou sous-classe d'une classe existante.

Les bases de l'héritage

L'héritage nous permet de créer une nouvelle classe en héritant de propriétés d'une classe existante, appelée classe parente ou classe de base. La classe enfant ou dérivée hérite de tous les attributs et méthodes de la classe parente et peut également ajouter ses propres attributs et méthodes.

Par exemple, supposons que nous ayons une classe Vehicle qui possède des propriétés telles que make, model et year, ainsi que des méthodes comme start et stop. Nous pouvons créer une classe Car qui hérite de la classe Vehicle et ajoute ses propres propriétés comme num_doors et num_seats. La classe Car peut également surcharger des méthodes comme start et stop si nécessaire.

Syntaxe de l'héritage en Python

La syntaxe de l'héritage en Python est simple. Pour créer une sous-classe, il suffit de spécifier le nom de la classe parente entre parenthèses après le nom de la nouvelle classe. Voici un exemple :

Héritage dans les classes Python

python
class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def start(self):
        print(f"{self.make} {self.model} started.")
        
    def stop(self):
        print(f"{self.make} {self.model} stopped.")

class Car(Vehicle):
    def __init__(self, make, model, year, num_doors, num_seats):
        super().__init__(make, model, year)
        self.num_doors = num_doors
        self.num_seats = num_seats

Dans cet exemple, la classe Car hérite de la classe Vehicle via la notation entre parenthèses, et sa méthode __init__ appelle la méthode __init__ de la classe parente à l'aide de la fonction super().

Surcharge de méthodes

En Python, une classe enfant peut surcharger les méthodes de la classe parente si nécessaire. Cela se fait en définissant une méthode portant le même nom dans la classe enfant.

Surcharge des méthodes de la classe parente en Python

python
class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def start(self):
        print(f"{self.make} {self.model} started.")
        
    def stop(self):
        print(f"{self.make} {self.model} stopped.")

class Car(Vehicle):
    def start(self):
        print(f"{self.make} {self.model} revved the engine and started.")

Dans cet exemple, la classe Car surcharge la méthode start de la classe Vehicle pour ajouter un message indiquant que le moteur est mis en régime avant le démarrage.

Héritage multiple

Python permet également l'héritage multiple, où une sous-classe peut hériter de plusieurs classes parentes. Pour ce faire, il suffit de lister les classes parentes entre parenthèses, séparées par des virgules.

Héritage multiple en Python

python
class Animal:
    def __init__(self, name):
        self.name = name
        
    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Mammal(Animal):
    def nurse(self):
        pass
    
class Reptile(Animal):
    def lay_eggs(self):
        pass
    
class Platypus(Mammal, Reptile):
    def __init__(self, name):
        super().__init__(name)

Dans cet exemple, la classe Platypus hérite à la fois des classes Mammal et Reptile, qui héritent toutes deux de la classe Animal. La classe Platypus n'a pas besoin d'implémenter la méthode speak car elle est héritée de la classe Animal via ses classes parentes.

Avantages de l'héritage

L'héritage offre plusieurs avantages aux programmeurs :

  1. Réutilisation du code : En héritant de classes existantes, nous pouvons réutiliser du code sans avoir à le réécrire. Cela permet de gagner du temps et de réduire la quantité de code à écrire.
  2. Extensibilité : L'héritage nous permet d'ajouter de nouvelles fonctionnalités à des classes existantes sans modifier directement leur code. Cela contribue à maintenir le code organisé et plus facile à entretenir.
  3. Polymorphisme : L'héritage nous permet de créer des objets qui peuvent être traités comme des instances de leurs classes parentes ou enfants, ce qui rend le code plus flexible et modulaire.

Conclusion

L'héritage est un concept fondamental en programmation orientée objet qui permet de créer de nouvelles classes à partir de classes existantes. Python offre une syntaxe simple et puissante pour implémenter l'héritage, permettant ainsi la réutilisation du code, l'extensibilité et le polymorphisme.

En comprenant les bases de l'héritage et ses avantages, les programmeurs peuvent créer du code plus efficace et modulaire, facile à maintenir et à étendre à l'avenir.

Pratique

Parmi les affirmations suivantes sur l'héritage en Python, lesquelles sont correctes selon les informations fournies sur l'URL spécifiée ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.