Un autre cas de réutilisation qui ne sera pas rare, sera souvent d'avoir besoin de créer une variante de l'objet, avec plus de méthodes, des attributs différents ou avec d'autres différences. Dans ce cas, vous avez deux solutions :
Vous comprendrez à nous lire que cette dernière méthode est la plus fiable : elle permet de préserver une classe originale saine et exempte des cas particuliers qui sont alors simplement définies dans les classes filles.
Ce concept d'héritage est mis en oeuvre simplement en passant le nom de la classe d'origine en paramètre de la classe fille :
class MaClasse: def affiche(self): print self.nom objet=MaClasseFille("Cedric") objet.affiche() def __init__(self, nom): self.essai="Bonjour" self.nom=nom def affiche(self): print self.essai, self.nom class MaClasseFille(MaClasse): def affiche(self): print self.nom objet=MaClasseFille("Cedric") objet.affiche()
ce qui affiche
Bonjour Cedric
La classe file peut donc posséder ses propres méthodes voire redéfinir les méthodes de sa classe mère :
class MaClasse: def __init__(self, nom): self.essai="Bonjour" self.nom=nom def affiche(self): print self.essai, self.nom class MaClasseFille(MaClasse): def affiche(self): print self.nom objet=MaClasseFille("Cedric") objet.affiche()
Avec cet exemple, la classe fille n'affichera que le nom passé en paramètre lors de l'instanciation alors que dans la classe mère, le nom était concaténé à "Bonjour". Il sera ainsi possible de dériver énormément de chose sans toucher à l'original et ainsi diminuer le risque d'introduction de bugs dans d'autres applications qui utiliseraient aussi cette classe. Le code devient alors réellement plus simple à maintenir et chaque programme devient plus sûr. Les efforts peuvent être mutualisés sur plusieurs classes, voire plusieurs applications car toute modification effectuée sur la classe mère sera automatiquement reportées sur les classes filles qui en hérite, ce qui est fondamental lors d'un débogage.
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.