Héritage en Python

L’héritage en POO(Programmation Orientée Objet) nous permet de définir une classe qui prend toutes les fonctionnalités d’une classe mère et nous permet d’en ajouter plus. Dans ce tutoriel, vous apprendrez à utiliser l’héritage en Python.

  • La classe mère est la classe héritée, également appelée classe de base.
  • La classe fille est la classe qui hérite d’une autre classe, également appelée classe dérivée.

 
 

Créer la classe mère

N’importe quelle classe peut être une classe mère, donc la syntaxe est la même pour créer n’importe quelle autre classe.
 

Exemple:

Créez une classe nommée Employee, avec la propriété salary et une méthode printSalary:

class Employee:
  def __init__(self, salary):
    self.salary = salary

  def printSalary(self):
    print(self.salary)

emp = Employee(2500)
emp.printSalary()

Sortie:

2500

 

Créer une classe fille

Pour créer une classe qui hérite des fonctionnalités d’une autre classe, envoyez la classe mère en tant que paramètre lors de la création de la classe fille.
 

Exemple:

Créez une classe nommée Programmer, qui héritera des propriétés et des méthodes de la classe Employee:

class Programmer(Employee):
  pass
Remarque: Utilisez le mot-clé ‘pass’ lorsque vous ne souhaitez pas ajouter d’autres propriétés ou méthodes à la classe.

Maintenant, la classe Programmer a les mêmes propriétés et méthodes que la classe Employee. Utilisez la classe Programmer pour créer un objet, puis exécutez la méthode printSalary:

p = Programmer(3500)
p.printSalary()

Sortie:

3500

 
 

Ajoutez la fonction __init__()

Jusqu’à présent, nous avons créé une classe fille qui hérite des propriétés et des méthodes de la classe mère.

Nous voulons ajouter la fonction __init__() à la classe fille.

class Programmer(Employee):
  def __init__(self, salary):
    self.salary = salary

Lorsque vous ajoutez la fonction __init__(), la classe fille n’héritera plus de la fonction __init__() de la classe mère. On peut dire que la classe fille surcharge la fonction __init__() de la classe mère.

Pour garder l’héritage de la fonction __init__() du classe mère, ajoutez un appel à la fonction __init__() de la classe mère:

class Programmer(Employee):
  def __init__(self, salary):
    Employee.__init__(self, salary)

 

Utilisez la fonction super()

Python a également la fonction super() qui fera que la classe fille héritera toutes les méthodes et propriétés de sa classe mère:

class Programmer(Employee):
  def __init__(self, salary):
    super().__init__(self, salary)

En utilisant la fonction super(), vous n’avez pas besoin d’utiliser le nom de la classe mère, il héritera automatiquement des méthodes et propriétés de sa classe mère.
 
 

Ajouter des propriétés à la classe fille

Ajoutez la propriété ‘bonus’ et passez en paramètre lors de la création d’objets:

class Programmer(Employee):
  def __init__(self, salary, bonus):
    super().__init__(self, salary)
    self.bonus = bonus
	
p = Programmer(3500, 100)

 

Ajouter des méthodes à la classe fille

Ajoutez une méthode appelée printBonus dans la classe Programmer:

class Programmer(Employee):
  def __init__(self, salary, bonus):
    super().__init__(self, salary)
    self.bonus = bonus

  def printBonus(self):
    print(self.salary)
	

p = Programmer(3500, 100)
p.printSalary()
p.printBonus()

Sortie:

3500
100

Si vous ajoutez une méthode dans la classe fille avec le même nom qu’une fonction dans la classe mère, l’héritage de la méthode du classe mère sera surchargé.
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.