Exercices POO super() dans une chaîne d'héritage
🎉

Bravo!

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'

Tests (3/4)

Vehicule
assert Vehicule(180).description() == 'Vehicule 180km/h'
Voiture
assert Voiture(200, 'Renault').description() == 'Voiture Renault 200km/h'
VoitureElectrique
ve = VoitureElectrique(150, 'Tesla', 400)
assert ve.description() == 'VoitureElectrique Tesla 150km/h autonomie=400km'

+ 0 tests cachés

Indices (3 disponibles)

solution.py