oujood.com

L'héritage en Python et comment l'utiliser

Dans ce tutoriel, vous découvrirez l'héritage Python et comment l'utiliser pour réutiliser le code d'une classe existante
L'héritage permet à une classe de réutiliser la logique d'une classe existante.

chercher |

Introduction à l'héritage en python

héritage nous permet de définir une classe qui hérite de toutes les méthodes et propriétés d'une autre classe.
La classe parent est la classe dont on hérite, aussi appelée classe de base.
La classe enfant est la classe qui hérite d'une autre classe, également appelée classe dérivée.

Créer une classe parent

Toute classe peut être une classe parent, la syntaxe est donc la même que pour la création de toute autre classe :
Exemple Créez une classe nommée Personne, avec les propriétés prenom et nom, et une méthode affichenom :

  Copier le code

class Personne:
  def __init__(self, fname, lname):
    self.prenom = fname
    self.nom = lname

  def affichenom(self):
    print(self.prenom, self.nom)

#Utilisez la classe Personne pour créer un objet, puis exécutez la méthode affichenom :

x = Personne("Anass", "Le Forgeron")
x.affichenom()

Créer une classe enfant

Pour créer une classe qui hérite de la fonctionnalité d'une autre classe, indiquez la classe parente comme paramètre lors de la création de la classe enfant :
Exemple Créez une classe nommée Etudiant, qui héritera des propriétés et des méthodes de la classe Personne :

  Copier le code

class Etudiant(Personne):
  pass

Remarque : utilisez le mot clé pass lorsque vous ne souhaitez pas ajouter d'autres propriétés ou méthodes à la classe.

La classe Etudiant possède maintenant les mêmes propriétés et méthodes que la classe Personne.
Exemple regroupez les deux bouts de code ci-dessus et utilisez la classe Etudiant pour créer un objet, puis exécutez la méthode affichenom :

  Copier le code

class Personne:
  def __init__(self, fname, lname):
    self.prenom = fname
    self.nom = lname

  def affichenom(self):
    print(self.prenom, self.nom)

class Etudiant(Personne):
  pass

#Utilisez la classe Etudiant pour créer un objet, puis exécutez la méthode affichenom :

x = Etudiant("Anass", "Le Forgeron")
x.affichenom()
ET comme vous le constatez, bien que nous n'avons pas défini les attributs nom et prenom ni la méthode affichenom la classe Etudiant les a hérité de sa classe parente Perssonne et peut donc les utiliser.

Ajouter la fonction __init__()

Jusqu'à présent, nous avons créé une classe enfant qui hérite des propriétés et des méthodes de son parent.
Nous voulons ajouter la fonction __init__() à la classe enfant (au lieu du mot-clé pass).
Remarque : La fonction __init__() est appelée automatiquement chaque fois que la classe est utilisée pour créer un nouvel objet.
Exemple Ajoutez la fonction __init__() à la classe Etudiant :

  Copier le code

class Etudiant(Personne):
  def __init__(self, fname, lname):
    #ici ajouter les propriétés et méthodes.
Quand vous ajoutez la fonction __init__(), la classe enfant n'hérite plus de la fonction __init__() de son parent.

Remarque : la fonction __init__() de la classe enfant remplace l'héritage de la fonction __init__() du parent.

Pour conserver l'héritage de la fonction __init__() du parent, il faut ajouter un appel à la fonction __init__() du parent :
Exemple :

  Copier le code

class Etudiant(Personne):
  def __init__(self, fname, lname):
    Personne.__init__(self, fname, lname)
Désormais, nous avons réussi à ajouter la fonction __init__() et à conserver l'héritage de la classe mère. Nous sommes donc prêts à ajouter des fonctionnalités dans la fonction __init__().

Utilisation de la fonction super()

Python possède aussi une fonction super() qui permet à la classe enfant d'hériter de toutes les méthodes et propriétés de son parent :
Exemple

  Copier le code

class Etudiant(Personne):
	def __init__(self, fname, lname):
    super().__init__(fname, lname)
En utilisant la fonction super(), vous n'avez pas besoin d'utiliser le nom de la classe parentale, la classe enfant hérite automatiquement des méthodes et des propriétés de son parent.

Ajouter des propriétés à une classe

Exemple Ajoutez une propriété appelée annee_du_diplome

  Copier le code

class Etudiant(Personne):
  def __init__(self, fname, lname,annee):
    super().__init__(fname, lname)
    self.annee_du_diplome = annee

x = Etudiant("Anass", "Le Forgeron",2021)

Ajouter des méthodes

Exemple Ajoutez une méthode appelée Bienvenue à la classe Etudiant :

  Copier le code

class Personne:
  def __init__(self, fname, lname):
    self.prenom = fname
    self.nom = lname

  def affichenom(self):
    print(self.prenom, self.nom)

class Etudiant(Personne):
  def __init__(self, fname, lname,annee):
    super().__init__(fname, lname)
    self.annee_du_diplome = annee
  def Bienvenue(self):
        print("Bienvenue", self.prenom, self.nom, "dans le club de", self.annee_du_diplome)

x = Etudiant("Anass", "Le Forgeron",2021)
x.Bienvenue()
Lorsque vous ajoutez une méthode à une classe enfant, donner lui le paramètre self.
Il faut éviter d'ajouter une méthode dans la classe enfant avec le même nom qu'une fonction dans la classe parent, si non l'héritage de la méthode parent sera remplacé.



Voir aussi nos tutoriel :

propriété css background-origin

Indique l'emplacement où est  positionnée l'image  d’arrière plan

Balises de style

Définit le texte en gras

fonction quotemeta

Protége les méta caractères