Même en ayant l'habitude des langages (pré-)compilés où ce genre de manip' est impossible, ajouter dynamiquement des méthodes à une classe est déjà douteux, mais les ajouter à une instance précise est encore plus tordu. Pourtant, l'exercice aurait pu être intéressant en soi...
Mais dans le cas qui te concerne aujourd'hui, c'est un simple problème de conception objet : il faut définir une classe Véhicule, puis deux classes Voitures et Moto qui dérivent toutes les deux de la classe véhicule.
class Vehicule:
def tourner(self):
print("Vehicule qui tourne")
class Moto(Vehicule):
def tourner(self):
print("Moto qui tourne")
class Voiture(Vehicule):
def tourner(self):
print("Voiture qui tourne")
class Autogyre(Vehicule):
def voler(self):
print("Autogyre qui vole");
h = Vehicule()
m = Moto()
v = Voiture()
a = Autogyre()
h.tourner()
m.tourner()
v.tourner()
a.tourner()
Ce qui donne :
Vehicule qui tourne
Moto qui tourne
Voiture qui tourne
Vehicule qui tourne
Dans cet exemple, les classes Voiture et Moto dérivent de Véhicule, mais redéfinissent la méthode « tourner », et c'est cette dernière version qui est donc appelée. En revanche, la classe Autogyre dérive également de Véhicule mais définit une autre méthode sans redéfinir « tourner ». C'est donc la version par défaut héritée de « Véhicule » qui est appelée, et c'est pourquoi on obtient « Véhicule qui tourne » et non « Autogyre qui tourne ».
# Prendre le problème à l'envers
Posté par Obsidian . En réponse au message Ajouter des méthodes à une instance de classe, après sa création. Évalué à 7.
Salut,
Même en ayant l'habitude des langages (pré-)compilés où ce genre de manip' est impossible, ajouter dynamiquement des méthodes à une classe est déjà douteux, mais les ajouter à une instance précise est encore plus tordu. Pourtant, l'exercice aurait pu être intéressant en soi...
Mais dans le cas qui te concerne aujourd'hui, c'est un simple problème de conception objet : il faut définir une classe Véhicule, puis deux classes Voitures et Moto qui dérivent toutes les deux de la classe véhicule.
Ce qui donne :
Dans cet exemple, les classes Voiture et Moto dérivent de Véhicule, mais redéfinissent la méthode « tourner », et c'est cette dernière version qui est donc appelée. En revanche, la classe Autogyre dérive également de Véhicule mais définit une autre méthode sans redéfinir « tourner ». C'est donc la version par défaut héritée de « Véhicule » qui est appelée, et c'est pourquoi on obtient « Véhicule qui tourne » et non « Autogyre qui tourne ».