Tutoriel Python – Héritage (11)

Tutoriel Python – Héritage (11)
Tutoriel Python – Héritage (11)

Python est langage de développement devenu très populaire dans le développement d’application. Nous allons continuer à avancer en regardant la notion d’héritage sur les objets en python et comment les manipuler.

Précédent tutoriel : #10 – objets, notions avancées

Ce tutoriel est également disponible en vidéo :

Héritage dans les classes

En suivant nos exemples suivant, on peut se dire que les fruits font parti d’une plus grande catégorie aliments. Nous pouvons donc créer une classe Fruit qui héritera de la classe Aliment.

Aliment pourrait contenir les paramètres qui sont communs à tous les aliments et Fruit avoir uniquement les paramètres dédiés au fruit tout en ayant accès aux paramètres définissant un aliment de façon plus global.

Ceci s’écrirait :

class Aliment:
    nom = ''

class Fruit(Aliment):
    estFruite = ''

Ici nous remontons le paramètre nom à la classe Aliment appelée classe mère et mettons un paramètre estFruite à la classe fille Fruit car ca paramètre n’est pas adapté à tous les aliments existant. Afin de créer cet héritage entre les deux classes, nous passons en paramètre de la classe fille, la classe que nous voulons comme classe mère.

Cela revient à créer un modèle de type :

Aliment -> Fruit -> banane
Aliment -> Fruit -> pomme
Pourquoi pas : Aliment -> Légume -> poireau

On pourrait donc écrire ce programme pour nommer le nom de notre objet qui est général à l’ensemble des éléments :

class Aliment:
    nom = ''

class Fruit(Aliment):
    estFruite = ''

  def __init__ (self, nom, estFruite):
      self.nom = nom self.estFruite = estFruite

banane = Fruit('banane', 'oui')

Avec ce concept d’héritage, il sera également possible d’appeler les fonctions de la classe mère sans soucis. Du coup cette fonction sera disponible à partir de toutes les classes filles.

class Aliment:
    nom = ''

def afficheNom(self):
        print(self.nom)

class Fruit(Aliment):
    estFruite = ''

  def __init__ (self, nom, estFruite):
      self.nom = nom
self.estFruite = estFruite

banane = Fruit('banane', 'oui') banane.afficheNom()

Il est également possible sur surcharger la fonction de la classe en la définissant également dans la classe fille. Si une fonction de même nom est dans la classe mère et la classe fille, alors c’est la fonction de la classe fille qui est appelée.

class Aliment:
    nom = ''

def afficheNom(self):
      print('Aliment')

class Fruit(Aliment):
    estFruite = ''

def __init__ (self, nom, estFruite):
    self.nom = nom
self.estFruite = estFruite

def afficheNom(self):
        print(self.nom)


banane = Fruit('banane', 'oui') banane.afficheNom()

Ici, c’est bien banane qui s’affichera et non Aliment car la fonction AfficheNom de la classe fille surcharge celle de la classe mère.

Heureusement, le Python a pensé à tout en vous donnant la possibilité d’attendre la fonction de même nom de la classe mère grâce à la fonction super().

Voici un exemple simple :

class Aliment:
    nom = ''

def afficheNom(self):
    print('Aliment')

class Fruit(Aliment):
    estFruite = ''

def __init__ (self, nom, estFruite):
  self.nom = nom
self.estFruite = estFruite

def afficheNom(self):
        super().afficheNom()

banane = Fruit('banane', 'oui') banane.afficheNom()

Héritage multiple

En Python, il est possible d’hériter de plusieurs classes et pas seulement d’une seule. Nous n’allons pas aller plus loin pout le moment mais voici un exemple de notre classe Fruit qui hérite de Aliment mais à présent également de Manger.

class Aliment:
    nom = ''

    def afficheNom(self):
        print('Aliment')


class Manger:
    action = 'manger'

class Fruit(Aliment, Manger):
    estFruite = ''

def __init__ (self, nom, estFruite):
  self.nom = nom
self.estFruite = estFruite

def afficheNom(self):
        super().afficheNom()

banane = Fruit('banane', 'oui') banane.afficheNom()

Conclusion

Nous avons vu de nouvelles notions utiles sur les objets en Python qui sont indispensables à connaitre pour faire des programmes de qualité. Nous irons plus loin dès le prochain chapitre dans notre apprentissage sur le python qui proposent encore de nombreux secrets.

Chapitre suivant : #12 – Classes abstraites

[ Article lu 1 fois aujourd'hui ]
A propos Judicaël Paquet 942 Articles
  Paquet Judicaël (expert en transformation et AI) Mes activités en France et en Suisse : - ingénieur prompt - coach AI - architecte de transformation agile - formations agiles personnalisées - sensibilisations et coaching de manager - audits de maturité agile et de situations - coaching agile (équipes, orga, product owner, scrum master, coach agile) Spécialités : scrum, kanban, management 3.0, agilité à l’échelle, lean startup, méthode agile, prompt AI, Intelligence artificielle. [Me contacter]

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.