Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
super() dans une chaîne d'héritage
Quand une classe herite d'une autre, son __init__ doit souvent appeler le __init__ du parent pour initialiser les attributs herites. C'est le role de super().__init__().
Dans une chaine d'héritage A -> B -> C, chaque niveau appelle super() pour deleguer l'initialisation au niveau du dessus. C'est comme une chaine de commandement : chaque maillon transmet ce qui ne le concerne pas.
Par exemple :
class Animal: def __init__(self, nom): self.nom = nom
class Chien(Animal): def __init__(self, nom, race): super().__init__(nom) self.race = race
Crée une chaine d'héritage : - Vehicule(vitesse_max) avec description() retournant 'Vehicule {vitesse_max}km/h' - Voiture(vitesse_max, marque) qui retourne 'Voiture {marque} {vitesse_max}km/h' - VoitureElectrique(vitesse_max, marque, autonomie) qui retourne 'VoitureElectrique {marque} {vitesse_max}km/h autonomie={autonomie}km'
Chaque classe appelle super().__init__() correctement.
Exemple : VoitureElectrique(150, 'Tesla', 400).description() # renvoie 'VoitureElectrique Tesla 150km/h autonomie=400km'