Types d'héritage en Python | Héritage Python [avec exemple]

Publié: 2021-02-09

Table des matières

introduction

La lutte pour un code propre est une bataille à laquelle participent tous les programmeurs. Et cette bataille peut être conquise avec une armure appropriée de concepts de programmation orientés objet. Et l'utilisation appropriée des concepts OOP nous aide à améliorer la réutilisabilité du code, la lisibilité, la complexité temporelle et spatiale optimale.

Coder en Python est super amusant. Il a un nombre énorme de support de bibliothèque, orienté objet, la programmabilité de l'interface graphique en fait un gâteau chaud parmi tous les langages de programmation.

L'héritage est l'une des fonctionnalités orientées objet les plus utilisées et son implémentation en python est une tâche passionnante. Alors, commençons maintenant !

Tout d'abord, comprenons la définition de l'héritage.

Héritage

L'héritage est un processus d'obtention des propriétés et des caractéristiques (variables et méthodes) d'une autre classe. Dans cet ordre hiérarchique, la classe qui hérite d'une autre classe est appelée sous-classe ou classe enfant, et l'autre classe est la classe mère.

L'héritage est catégorisé en fonction de la hiérarchie suivie et du nombre de classes parentes et de sous-classes impliquées.

Il existe cinq types d'héritages :

  1. Héritage unique
  2. Héritage multiple
  3. Héritage à plusieurs niveaux
  4. Héritage hiérarchique
  5. Héritage hybride

Héritage unique

Ce type d'héritage permet à une sous-classe ou à une classe dérivée d'hériter des propriétés et des caractéristiques de la classe parent, cela évite la duplication de code et améliore la réutilisation du code.

#classe parent
classe ci-dessus :
je = 5
def fun1 (soi):
print( "Salut, vous êtes dans la classe parente" )

#sous-classe
classe ci- dessous (au-dessus):
je= 10
def fun2 (soi):
print( "Salut, vous êtes dans la sous-classe" )

temp1=En dessous()
temp2=Au-dessus()
temp1.fun1()
temp1.fun2()
temp2.fun1()
imprimer(temp1.i)
impression(temp2.i)
#temp2.fun2()

Très bien, passons en revue le code ci-dessus.

Dans le code ci-dessus, "Above" est la classe parent et "Below" est la classe enfant qui hérite de la classe parent. Implémenter l'héritage en python est une tâche simple, il suffit de mentionner le nom de la classe parent entre les parenthèses de la classe enfant. Nous créons des objets à la fois de la classe parent et de la classe enfant, et voici un point intéressant sur l'héritage. Une classe enfant peut accéder aux méthodes et aux variables de la classe parent, alors que l'inverse n'est pas vrai.

Ainsi, dans le code ci-dessus, l'objet temp1 peut accéder aux méthodes fun1 et fun2, tandis que l'objet temp2 ne peut accéder qu'à la méthode fun1. De même, la même règle s'applique aux variables dans le code. Et l'accès à une méthode de classe enfant ou à une variable à partir d'un objet de classe parent génère une erreur. Si la dernière ligne du code n'est pas commentée, cela génère une erreur.

Héritage multiple

Cet héritage permet à une classe enfant d'hériter de plusieurs classes parentes. Ce type d'héritage n'est pas pris en charge par les classes Java, mais Python prend en charge ce type d'héritage. Il a un énorme avantage si nous avons besoin de rassembler plusieurs caractéristiques de différentes classes.

#parent classe 1
classe A :
démo1= 0
def fun1 (soi):
imprimer (self.demo1)

#parent classe 2
classe B :
démo2= 0
def fun2 (soi):
imprimer (self.demo2)

#classe enfant
classe C (A, B):
def fun3 (soi):
print( "Salut, vous êtes dans la classe enfant" )

# Code principal
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( "le premier nombre est : " ,c.demo1)
print( "le deuxième nombre est : " ,c.demo2)

Dans le code ci-dessus, nous avons créé deux classes parentes "A", "B". Suivant la syntaxe de l'héritage en python, nous avons créé une classe enfant, qui hérite des deux classes « A » et « B ». Comme indiqué précédemment, une classe enfant peut accéder aux méthodes et aux variables de la classe parent, la classe enfant "C" peut accéder aux méthodes de sa classe parent.

Héritage à plusieurs niveaux

Dans l'héritage multiniveau, le transfert des propriétés des caractéristiques se fait hiérarchiquement vers plusieurs classes. Pour obtenir une meilleure visualisation, nous pouvons le considérer comme une relation d'ancêtre à petits-enfants ou une racine à feuille dans un arbre à plus d'un niveau.

#parent classe 1
véhicule de classe :
def fonctionnement (auto):
print( "les véhicules sont utilisés pour le transport" )

#enfant classe 1
voiture de classe (véhicule):
def roues (auto):
print( "une voiture a 4 roues" )

#enfant classe 2
classe electric_car (voiture):
def spécialité (auto):
print( "la voiture électrique roule à l'électricité" )

électrique=voiture_électrique()
spécialité.électrique()
roues.électriques()
fonctionnement.électrique()

Après un essai sur le code ci-dessus, nous avons créé une classe "véhicule", puis nous avons créé une voiture de classe qui hérite de la classe véhicule. Maintenant, le "véhicule" est une classe parent et la "voiture" est une classe enfant. Plus tard, nous avons créé une classe "electric_car", maintenant la classe car est une classe parent et la classe electric_car est une classe enfant, et la relation entre la classe vehicle et la classe electric_car est l'héritage multiniveau.

Ici, la classe electric_car peut accéder aux méthodes et aux variables des classes de véhicule et de voiture, tandis que la classe de voiture ne peut accéder qu'aux méthodes et aux variables de la classe de véhicule. Et comme indiqué, le véhicule de la classe parent ne peut accéder à aucune méthode de la classe enfant.

Héritage hiérarchique

Cet héritage permet à une classe d'héberger en tant que classe parent plusieurs classes ou sous-classes enfants. Cela offre l'avantage de partager le fonctionnement des méthodes avec plusieurs classes enfants, évitant ainsi la duplication de code.

#classe parent
Parent de classe :
def fun1 (soi):
print( "Salut, vous êtes dans la classe parente" )

#enfant classe 1
classe enfant1 (parent):
def fun2 (soi):
print( "Salut, tu es dans la classe enfant 1" )

#enfant classe 2
classe enfant2 (parent):
def fun3 (soi):
print( "Salut, tu es dans la classe enfant 2" )

#enfant classe 3
classe enfant3 (parent):
def fun4 (soi):
print( "Salut, tu es dans la classe enfant 3" )

# programme principal
enfant_obj1 = enfant3()
enfant_obj2 = enfant2()
enfant_obj3 = enfant1()
enfant_obj1.fun1()
enfant_obj1.fun4()
enfant_obj2.fun1()
enfant_obj2.fun3()
enfant_obj3.fun1()
enfant_obj3.fun2()

Dans le code ci-dessus, nous avons une seule classe parent et plusieurs classes enfants héritant de la même classe parent. Désormais, toutes les classes enfants peuvent accéder aux méthodes et aux variables de la classe parent. Nous avons créé une classe "Parent" et 3 classes enfants "child1", "child2", "child3", qui héritent de la même classe parent "Parent".

Paiement : Idées de projets Python Open Source

Héritage hybride

Un héritage est dit hybride si plusieurs types d'héritage sont implémentés dans le même code. Cette fonctionnalité permet à l'utilisateur d'utiliser au mieux la fonctionnalité d'héritage. Cela répond à l'exigence d'implémenter un code qui nécessite plusieurs héritages dans l'implémentation.

Classe A:
def fun1(self):
print(“Hé, vous êtes en classe A”)classe B(A):
def fun2(self):
print(“Hey, vous êtes en classe B”)class C(A):
def fun3(self):
print("Salut, vous êtes en classe C")class D(C,A): #line 13
def fun4(self):
print("Salut, vous êtes en classe D")#programme principal
réf = D()
ref.fun4()
ref.fun3()
ref.fun1()

Dans le code ci-dessus, nous pouvons voir que nous avons implémenté plus d'un type d'héritage. Les classes A, B, C implémentent l'héritage hiérarchique et les classes A, C, D implémentent l'héritage multiniveau. Non, ces héritages individuels ont leurs propriétés individuelles d'accès aux méthodes et aux variables de la classe parent. Aussi, il y a un point à noter.

Lorsque nous implémentons l'héritage à plusieurs niveaux, nous suivons une syntaxe telle que "child_class (parent_class1, parent_class2)". Mais cette syntaxe renverra une erreur si "parent_class1" est hiérarchiquement au-dessus de "parent_class2". Si nous voulons implémenter cette syntaxe, alors le "parent_class1" doit être dans un niveau hiérarchiquement inférieur à "parent_class2". Par exemple, dans le code ci-dessus, si la ligne 13 a une classe de syntaxe D(A, C), alors le code ne fonctionnera pas puisque la classe C est hiérarchiquement inférieure à la classe A.

Apprenez des cours de science des données dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Lire : Idées et sujets de projet Python

Conclusion

Nous avons parcouru les utilisations et les besoins de l'héritage et compris la définition de l'héritage. De plus, nous avons parcouru les types d'héritage et parcouru les codes d'implémentation et les explications de chaque type d'héritage. Compréhension des règles d'accès aux variables et aux méthodes dans différents types d'héritages.

Maintenant que vous connaissez les différents types d'héritages en python, essayez de les implémenter et essayez de les utiliser dans votre code. Essayez d'optimiser votre code en utilisant correctement l'héritage.

Si vous êtes curieux d'en savoir plus sur la science des données, consultez le diplôme PG de IIIT-B & upGrad en science des données qui est créé pour les professionnels en activité et propose plus de 10 études de cas et projets, des ateliers pratiques, un mentorat avec des experts de l'industrie, 1- on-1 avec des mentors de l'industrie, plus de 400 heures d'apprentissage et d'aide à l'emploi avec les meilleures entreprises.

Quelle est la différence entre l'héritage multiple et l'héritage multiniveau ?

De nombreux programmeurs débutants confondent souvent l'héritage multiple et l'héritage à plusieurs niveaux. Ce qui suit illustre certaines des différences significatives entre ces deux types d'héritage.
Héritage multiple -
1. Lorsqu'une classe enfant hérite de ses propriétés et caractéristiques de plusieurs classes de base, ce type d'héritage est appelé héritage multiple.
2. Il n'est pas largement utilisé car l'héritage multiple peut être assez complexe à comprendre.
3. Il n'a que deux niveaux de classe : la classe de base et la classe dérivée.
Héritage à plusieurs niveaux
1. L'héritage dans lequel une classe enfant hérite des propriétés de sa classe de base qui hérite en outre des propriétés d'une autre classe de base, faisant de la première une classe enfant, est appelé héritage à plusieurs niveaux.
2. Cet héritage sert de grands objectifs et est donc largement utilisé.
3. Il a au moins trois niveaux de classe : classe de base, classe intermédiaire et classe dérivée.

Que comprenez-vous de l'héritage hybride ?

L'héritage hybride est un type unique d'héritage. Plutôt que d'avoir un nouveau concept, comme son nom l'indique, il s'agit d'une combinaison de deux ou plusieurs types d'héritages. Par exemple, une classe montrant à la fois des héritages multiples et multiniveaux est un exemple d'héritage hybride.

Que savez-vous des modificateurs d'accès en Python ?

En Python, il existe 3 types de modificateurs d'accès mentionnés ci-dessous :
1. Modificateur d'accès public - Les membres publics d'une classe sont accessibles par n'importe quelle partie du programme. En Python, si le spécificateur d'accès des membres de données ou des fonctions membres n'est pas spécifié, il est public par défaut.
2. Modificateur d'accès protégé - Si un membre de données ou une fonction membre est défini comme protégé, il n'est accessible que par les classes dérivées de cette classe.
3. Modificateur d'accès privé - Le modificateur d'accès privé est le spécificateur d'accès le plus sécurisé. Les membres privés ne sont accessibles qu'au sein de la classe dans laquelle ils sont définis.