Tutoriel Python - Héritage des classes
- Héritage de la classe Python - Substitution de méthodes
- Classe Python Héritage multiple
- Héritage multiniveau de la classe Python
Dans cette section, vous apprendrez l’héritage de la programmation orientée objet Python.
Dans la section Héritage, une classe enfant est créée à partir d’une classe parent. La classe enfant hérite de tout (membres de données et fonctions membres) de la classe parente.
Voici la syntaxe de l’héritage en Python:
class ParentClass:
# members
class ChildClass(ParentClass):
# members
Dans la classe enfant, vous avez toutes les fonctionnalités de la classe parente et de nouvelles fonctionnalités peuvent également être ajoutées.
Comme dans l’exemple ci-dessous, elle a une classe parente nommée Auto
et une classe enfant car
est héritée de celle-ci.
>>> class Auto:
def __init__(self, e, n):
self.engine = e
self.name = n
def display(self):
print("Name of Auto: ", self.name)
print("Engine of auto: ", self.engine)
>>> class Car(Auto):
def __init__(self):
self.x= input("Enter name of car: ")
self.y= input("Enter engine of car: ")
Auto.__init__(self,self.y,self.x)
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
Name of Auto: Prius
Engine of auto: 1.5l
Vous pouvez voir ici que les méthodes de la classe Auto
peuvent être utilisées dans la classe Car
. C’est parce que la classe Car
est héritée de Auto
.
A l’intérieur du constructeur de Car
, le constructeur de Auto
est appelé. L’objet de Car
peut être utilisé pour appeler toutes les méthodes de Auto
.
Héritage de la classe Python - Substitution de méthodes
La méthode est prioritaire lorsque vous avez les mêmes méthodes pour les classes enfant et parent. La méthode est un concept dans lequel une classe enfant change l’implémentation des méthodes de sa classe parent.
Considérons l’exemple où la classe enfant Car
a la même méthode d’affichage que la classe Auto
mais l’implémentation est modifiée:
>>> class Auto:
def __init__(self, e, n):
self.engine = e
self.name = n
def display(self):
print("Name of Auto: ", self.name)
print("Engine of auto: ", self.engine)
>>> class Car(Auto):
def __init__(self):
self.x= input("Enter name of car: ")
self.y= input("Enter engine of car: ")
Auto.__init__(self,self.y,self.x)
def display(self):
print("You are in child class")
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
You are in child class
Donc maintenant, quand la méthode d’affichage est appelée dans l’objet c
, la méthode de la classe fille est invoquée.
Classe Python Héritage multiple
L’héritage multiple se produit lorsqu’une classe enfant a plus d’une classe parentale. Les fonctionnalités de chaque classe parent sont héritées par la classe enfant.
La syntaxe de l’héritage multiple est la suivante
class A:
# members
class B:
# members
class child(A, B):
# members
Exemple :
>>> class A:
def dispA(self):
print('You are in class A')
>>> class B:
def dispB(self):
print('You are in class B')
>>> class C(A, B):
def dispC(self):
print('You are in class C')
>>> Cobj = C()
>>> Cobj.dispA()
You are in class A
>>> Cobj.dispB()
You are in class B
>>> Cobj.dispC()
You are in class C
Il est à noter que l’objet de C
(classe enfant) peut appeler les méthodes de ses classes parentes A
et B
. Par conséquent, vous pouvez dire que C hérite de tout ce qui est A
et B
.
Héritage multiniveau de la classe Python
L’héritage multiniveau se produit lorsque vous héritez d’une classe enfant d’une autre classe enfant.
La syntaxe de l’héritage multiniveau est la suivante:
class A:
# members
class B(A):
# members
class C(B):
# members
Exemple:
>>> class A:
def dispA(self):
print('You are in class A')
>>> class B(A):
def dispB(self):
print('You are in class B')
>>> class C(B):
def dispC(self):
print('You are in class C')
>>> Cobj = C()
>>> Cobj.dispA()
You are in class A
>>> Cobj.dispB()
You are in class B
>>> Cobj.dispC()
You are in class C
Vous pourriez voir ici que la classe C
peut invoquer les méthodes de ses classes parentes et grand-parentes.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook