héritage Python
ast Python module |
code Python module |
COM PHP module |
dis Python module |
Ev PHP module |
http Python module |
imp Python module |
io Python module |
keyword Python module |
nis Python module |
os Python module |
PS PHP module |
Python functions |
re Python module |
SPL PHP module |
StackOverflow |
struct Python module |
Sync PHP module |
time Python module
Michael Zippo
01.11.2021
L’héritage Python se produit lorsqu’une sous-classe utilise le code d’une autre classe. L’héritage est une fonctionnalité essentielle dans les langages orientés objet comme Python qui rend le codage plus facile et plus efficace.
Python est un langage orienté objet, ce qui signifie qu’il prend en charge la création de blocs de code réutilisables pour aider à rendre le code plus efficace. L’une des façons dont cela se produit est l’héritage, o√π une sous-classe peut utiliser le code d’une autre classe.
Par exemple, vous pouvez avoir une classe qui stocke les " comptes bancaires " et vouloir créer un sous-classe qui stocke les "comptes bancaires en or" qui peuvent référencer des attributs dans les "comptes bancaires" classe existante.
Dans ce tutoriel, nous allons détailler les bases de l’héritage en Python. Nous allons également discuter du fonctionnement des classes Python parents et enfants, et de la façon de remplacer les attributs et les méthodes lorsque vous travaillez avec des objets de classes.
Python Héritage
L’héritage est un terme qui est utilisé pour décrire une classe Python dans une autre classe. Les classes appelées sous-classes
ou classes enfants
peuvent hériter des valeurs des classes parents
, de la même manière que les enfants héritent des caractéristiques de leurs parents dans le monde réel.
L’héritage est utile car il nous permet de créer des sous-classes
qui ont les mêmes types de valeur qu’une classe parent, sans avoir à déclarer ces types plusieurs fois.
Parent Classes
Les classes parentes (également appelées classes de base
créent la structure principale à laquelle les sous-classes peuvent accéder. Nous pouvons créer plusieurs sous-classes sans avoir à déclarer à nouveau le même ensemble de valeurs communes que celui dérivé méthodes de classe de la classe parent.
Utilisons un exemple pour illustrer comment cela fonctionnerait en action. Supposons que nous ayons un programme qui fonctionne avec deux types de comptes bancaires différents : parent et enfant.
81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. amp aujourd’hui.
Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.
Ces deux comptes sont des comptes bancaires, et donc ils auront des valeurs similaires. Mais chacun de ces comptes peut nécessiter ses propres informations uniques. Par exemple, le compte d’un parent peut supporter un découvert, alors que le compte de l’enfant ne peut fonctionner qu’avec son solde.
Donc, si nous voulions créer un programme avec ces valeurs, nous définirions d’abord une classe pour notre compte bancaire (une classe parent) puis créez des classes enfants pour les deux types de comptes bancaires‚Äîparent et enfant‚Äîque nous voulons prendre en charge.
Voici un exemple de déclaration d’une classe parent pour un compte bancaire :
Nous avons créé la classe BankAccount
qui stocke trois valeurs : prénom, nom et solde. Nous pouvons également ajouter des méthodes à notre classe, comme ceci :
Notre classe stocke désormais trois valeurs, ainsi que deux nouvelles méthodes : details et balance. La méthode détails
permet de connaaître le prénom et le nom de notre titulaire de compte, et la méthode solde
renverra le solde du titulaire de compte.
Chaque méthode et variable que nous déclarons dans notre classe BankAccount
sera accessible dans notre classe enfant.
Pour illustrer notre classe en action, créons un exemple de compte bancaire. Nous pouvons le faire en utilisant le code suivant :
Cela créera un compte pour John Appleseed
qui contient 100 $. Maintenant que nous avons notre compte prêt, nous pouvons commencer à le référencer comme nous le ferions avec n’importe quelle autre classe. Voici un exemple de nous exécutant la méthode getBalance()
dans notre compte bancaire pour savoir combien l’argent que nous avons :
Notre programme renvoie les éléments suivants :
Classes enfants
Dans l’exemple ci-dessus, nous avons déclaré une classe parente qui stocke les comptes bancaires. Mais que se passe-t-il si nous voulons stocker des informations sur un type de compte spécifique comme le compte d’un enfant de moins de 18 ans ? C’est là qu’interviennent les classes enfants.
Les classes enfants, ou sous-classes, héritent des valeurs de la classe parent. Cela signifie que chaque classe enfant pourra référencer les méthodes et les variables que nous déclarons dans notre classe parent.
Disons donc que nous voulons créer une classe enfant pour un ChildBankAccount
. Ce compte doit pouvoir renvoyer les informations de compte bancaire d’un utilisateur, son nom et son solde, et doit également avoir une nouvelle valeur appelée restreint
. Cette valeur sera stockée sur le compte d’un enfant car il a moins de 18 ans et n’est pas éligible pour un compte bancaire complet.
Pour créer une classe enfant, nous pouvons utiliser le code suivant :
Le ChildBankAccount< La classe /code> devient un enfant de la classe BankAccount
car BankAccount
est placé entre parenthèses. Si nous voulons que notre classe enfant ait exactement les mêmes valeurs que notre classe parent ‚ÄîBankAccount
‚Äînous pouvons utiliser le mot-clé pass
comme ceci :
Mais comme nous l’avons vu précédemment, notre compte enfant aura besoin pour stocker une valeur spéciale : une variable qui dit que le compte de l’utilisateur est restreint.
Pour atteindre cet objectif, nous allons ajouter une nouvelle valeur appelée restreint
à notre classe enfant. Nous pouvons le faire en utilisant le code suivant :
Maintenant, décomposons notre code.
Dans le code ci-dessus, nous indiquons que nous voulons que nos ChildBankAccounts contiennent quatre valeurs : prénom, nom, équilibre et restreint.
"Carrière Karma est entré dans ma vie quand j’en avais le plus besoin et m’a rapidement aidé à suivre un bootcamp. Deux mois après l’obtention de mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs en la vie !"
Vénus, ingénieur logiciel chez Rockbot
Les trois premiers ‚Äînom, prénom et solde‚Äîsont les mêmes que nos valeurs de la classe parent mais restreint
est nouveau, et il est exclusif à notre classe enfant. Par défaut, restreint
est défini sur True
.
Donc, si nous créons un BankAccount
standard (pas un ChildBankAccount
), nous ne pourrons pas accéder à la valeur restreinte
. De même, nous ne pourrons pas accéder à la méthode isRestricted
à moins de créer un ChildBankAccount
.
Voici un exemple de création d’un ChildBankAccount
et en utilisant les méthodes getBalance()
et isResticted()
pour en savoir plus sur notre classe :
Notre code renvoie les éléments suivants :
Comme vous pouvez le voir, notre programme définit d’abord un nouveau ChildBankAccount
pour Bill Appleseed
, dont le compte détient 100 $. Ensuite, notre programme exécute la méthode getBalance()
dans notre classe, qui renvoie le solde de l’utilisateur. getBalance()
est déclaré dans notre classe parent, BankAccount
, mais est accessible à ChildBankAccount
via héritage.
Notre programme exécute également la méthode isRestricted()
, qui stipule que le compte de l’enfant est restreint car il a moins de 18 ans. Cette classe est déclarée dans ChildBankAccount
, ce qui signifie qu’il n’est pas accessible à notre classe parente BankAccount
. Si nous voulions créer un BankAccount
restreint, nous aurions besoin de changer la classe parent.
Redéfinir les méthodes parent
Dans notre exemple ci-dessus, nous avons déclaré un classe parent appelée BankAccount
qui stocke les informations des comptes bancaires. Nous avons également créé une classe enfant appelée ChildBankAccount
qui stocke les informations pour les titulaires de compte de moins de 18 ans. Cette classe a hérité des méthodes de la classe BankAccount
et a également créé le isRestricted()
.
Mais que se passe-t-il si nous voulons modifier une méthode de classe parent existante ? Disons que nous voulons que notre solde BankAccount
renvoie un message avec leur solde et un message indiquant Vous êtes éligible pour un découvert
, mais nous ne voulons pas que cela apparaisse pour ChildBankAccount
.
Pour ce faire, nous devons remplacer notre méthode parent.
Voici le code de notre méthode parent révisée, BankAccount
, qui imprime désormais un message aux titulaires de compte pour leur dire qu’ils ont droit à un découvert lorsqu’ils consultent leur solde :
Maintenant, si nous créons un nouveau BankAccount
pour John Appleseed
et imprimer son solde, nous verrons un message indiquant Vous avez droit à un découvert
. Voici un exemple dans lequel nous déclarons un nouveau compte et vérifions son solde :
Notre code renvoie les éléments suivants :
Mais ce changement signifie également que notre ChildBankAccount
, qui hérite de ses valeurs de BankAccount
, verra également le message. Voici un exemple de création d’un ChildBankAccount
et de vérification de son solde maintenant que notre classe parente BankAccount
a changé :
Notre code renvoie :
Parce que les découverts ne sont généralement pas autorisés pour les enfants, nous devrons modifier notre code. Maintenant, pour ce faire, nous devons modifier notre classe ChildBankAccount
et déclarer une nouvelle fonction getBalance()
.
Le remplacement des méthodes parentes peut être utile lorsque vous avez plusieurs méthodes enfants qui peuvent utiliser des méthodes similaires à leurs parents, mais nécessitent que leurs propres modifications spécifiques soient apportées. Comme dans le cas ci-dessus, nous voulons que nos comptes bancaires parents voient un message de découvert, mais pas nos comptes bancaires enfants, nous avons donc remplacé notre méthode parent dans ChildBankAccount
.
L’héritage est utilisé dans la programmation orientée objet pour vous aider à créer des sous-classes pouvant stocker des valeurs déjà déclarées dans une classe parente. Ceci est utile lorsque vous créez des classes similaires qui stockeront des valeurs similaires, car vous pouvez utiliser l’héritage pour créer ces classes sans répéter votre code plusieurs fois.
Dans ce didacticiel, nous avons exploré le rôle de l’héritage en Python . Nous avons également discuté du fonctionnement de l’héritage et des classes parent et enfant, puis nous avons exploré comment remplacer les méthodes parent. Vous êtes maintenant prêt à travailler avec les classes et l’héritage comme un expert Python !