Introduction à l'héritage en Python

Python, doté de capacités multi-paradigmes, s'adapte évidemment au style de programmation orienté objet. Et n'importe quel langage ne peut pas être assez ridicule pour revendiquer une méthodologie orientée objet sans fournir de support pour l'héritage, y compris python. Python fournit une saveur d'héritage distinctement unique, permettant des opérations extrêmement puissantes jamais vues auparavant. Bien qu'il comporte certaines limitations, par exemple, actuellement, la sécurité par le biais de la portée pour les membres de classe n'est obtenue que par convention, et ne fait pas intrinsèquement partie du langage. Ainsi, les membres déclarés privés sont en fait accessibles au public avec quelques modifications.

Syntaxe de classe

La syntaxe pour définir une classe dérivée lorsqu'une ou plusieurs classes de base doivent être héritées est la suivante:

class derivedClassName(baseClassName(, …)):


Comme indiqué, la classe dérivée spécifie une liste de classes de base séparées par des virgules à hériter de l'en-tête de définition de classe.

Cuisine de classe

Commençons par définir une classe de base utilisée pour tous nos exemples:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

La base illustrée définit un modèle d'objet utilisé pour définir les cuisines et capturer s'il s'agit d'une cuisine cuite ou non. Il a également un constructeur utilisé pour accepter le type de cuisine. Plus tard, un objet est créé de type «cuit».

Types d'héritage en Python

Il existe principalement deux types d'héritage, dont une combinaison donne tous les autres types.

1. Héritage unique: une classe de base, héritée par une classe dérivée. Il s'agit du type d'héritage le plus simple. Aussi le minimum possible. La classe dérivée appelle automatiquement le constructeur de la classe de base.

2. Héritage multiple: plusieurs classes de base héritées par une classe dérivée. Les constructeurs de classe de base sont appelés dans l'ordre dans lequel les classes ont été dérivées.

Types d'héritage dérivés

La combinaison des deux formes d'héritage ci-dessus peut conduire aux types d'héritage suivants:

1. Héritage hiérarchique: une classe de base héritée par plusieurs classes dérivées. Chaque classe dérivée fonctionnera indépendamment, mais les objets partagent les variables de classe entre différentes classes.

2. Héritage à plusieurs niveaux: classe dérivée servant de classe de base pour une autre classe dérivée. Les constructeurs de classe de base sont invoqués récursivement dans ce cas.

3. Héritage hybride: combinaison de plusieurs instances des types d'héritage mentionnés ci-dessus. Cela pourrait conduire à toute combinaison imaginable de classes.

Exemples d'héritage en Python

Ci-dessous sont des exemples d'héritage en Python:

1. Héritage unique

Créons une classe appelée Indian Cuisine qui hérite de la cuisine de classe.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Comme indiqué dans une nouvelle classe, indian_cusine a été créé qui accepte le paramètre de type et appelle un constructeur de classe de base, en passant le paramètre. Il crée en outre un nouvel emplacement de variable d'objet . Ceci est utilisé uniquement dans la classe dérivée et n'est pas visible pour les objets de la classe de base.

2. Héritage hiérarchique

Créons une classe appelée ItalianCuisine qui hérite de la cuisine de classe:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Comme indiqué dans une nouvelle classe, italian_cusine a été créé qui accepte le paramètre de type et appelle un constructeur de classe de base, en passant le paramètre. Il crée en outre un nouvel emplacement de variable d'objet . Ceci est utilisé uniquement dans la classe dérivée et n'est pas visible pour les objets de la classe de base. Maintenant, puisque deux classes, indian_cusines et italian_cuisine héritent de la classe cuisine, un héritage hiérarchique est implémenté.

3. Héritage multiple

Créons une classe appelée FineDineCuisine qui hérite de plusieurs classes.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

La nouvelle classe fine_dine_cuisine, hérite à la fois de indian_cuisine et italian_cuisine, héritant de leurs paramètres. Il accepte les paramètres type, place et portion_size. type et place sont passés comme arguments pour les constructeurs de classe de base. portion_size est un nouveau paramètre d'objet non partagé avec les classes de base.

Remarque sur l'héritage des diamants:

Maintenant, puisque indian_cuisine et italian_cuisine héritent de la classe cuisine, il constitue un cas classique d'héritage diamant, où plusieurs instances d'une classe de base sont directement / indirectement présentes pour une classe dérivée. Dans la plupart des langages, comme c ++, cela pose problème ou des classes abstraites sont utilisées. Python, d'autre part, spécifie sa propre solution innovante. Il hérite des méthodes et des attributs communs une seule fois en donnant la préférence aux classes dans l'ordre d'héritage. Ainsi, ici, puisque la cuisine est héritée deux fois, la préférence est donnée à la version indian_cuisine de la cuisine, car elle est héritée en premier.

Remarque sur les membres du groupe:

Tout attribut défini dans la définition de classe, mais pas dans une fonction, devient un attribut de classe et est partagé entre toutes les instances de la classe. Ainsi, si un objet modifie l'un de ces attributs de classe, les modifications sont visibles pour toutes les autres instances (que ce soit pour le même objet de classe ou l'objet de classe dérivé). Soyez donc prudent lorsque vous utilisez des attributs de classe absents de toute définition de méthode.

Conclusion - Héritage en Python

Python a une fois de plus défini une méthode très flexible, accommodante et puissante à utiliser lorsque le paradigme orienté objet est l'itinéraire préféré. C'est certainement un concept que tout le monde peut utiliser et devrait avoir sous la ceinture. Ces concepts sont utilisés pour former les blocs de construction de tout logiciel évolutif et maintenable.
Avec cette introduction de base à l'héritage en python, vous pouvez aller de l'avant et cibler des déclarations de problèmes du monde réel, et voir à quel point vous pouvez penser à une conception.

Articles recommandés

Ceci est un guide de l'héritage en Python. Ici, nous discutons de l'introduction, de la syntaxe et des types d'héritage en Python avec différents exemples et son implémentation de code. Vous pouvez également consulter nos autres articles suggérés -

    1. Héritage en Java
    2. Qu'est-ce que l'héritage en programmation?
    3. Héritage en C #
    4. Surcharge en Java
    5. Héritage en PHP
    6. Déclaration d'une classe abstraite en C # avec un exemple