Quel est l'intérêt d'appeler la méthode dans la classe fille du même nom que la classe parent?
class Vehicule :
def demarre(self) :
print("Le véhicule démarre")
class Voiture(Vehicule) :
def avance(self) :
super().demarre()
print("La voiture roule")
class Avion(Vehicule) :
def avance(self) :
super().demarre()
print("L'avion vol")
v = Voiture()
a = Avion()
v.avance()
a.avance()
Est on d'accord que cela marche de la même manière, en utilisant le même nom de méthode poru tous les véhicules?
Si oui, quel est l'intérêt, dans l'exemple de la vidéo, d'avoir appelé les méthodes filles de la même manière que la méthode parent?
Salut Flo,
Ça fonctionne pour Voiture et Avion mais pas Vehicule (qui devra utiliser demarre au lieu de avance).
Ce qu'il faut retenir ici c'est que c'est important de ne pas utiliser des noms différents pour chaque méthode de classes qui ont un lien. Cette notion n'est même pas obligée d'être en lien avec l'héritage.
Je te donne un exemple pour mieux illustrer tout ça. On va reprendre le cas des Véhicules et je vais même enlever l'héritage pour te montrer :
class Voiture :
def roule(self) :
print("La voiture roule")
class Avion :
def vole(self) :
print("L'avion vol")
class Bateau:
def flotte(self):
print("Le bateau flotte")
vehicules = [Voiture(), Avion(), Bateau()]
"""Si maintenant tu veux faire un script qui fait démarrer tous tes véhicules, ça va être laborieux.
Il faudrait faire quelque chose du genre :"""
for vehicule in vehicules:
if isinstance(vehicule, Voiture):
vehicule.roule()
elif isinstance(vehicule, Avion):
vehicule.vole()
elif isinstance(vehicule, Bateau):
vehicule.flotte()
Maintenant si tu tiens compte du polymorphisme, c'est beaucoup plus facile à utiliser, tu n'as pas besoin de savoir le type de ton instance pour la faire avancer :
class Voiture :
def avance(self) :
print("La voiture roule")
class Avion :
def avance(self) :
print("L'avion vol")
class Bateau:
def avance(self):
print("Le bateau flotte")
vehicules = [Voiture(), Avion(), Bateau()]
for vehicule in vehicules:
vehicule.avance()
Salut Thibault,
Désolé je n'avais pas vu ta réponse (J'ai dû mal à avoir de la disponibilité pour être suffisamment assidu dans ma formation...)
En tout cas merci pour ta réponse, c'est plus clair maintenant.
A bientôt.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte