Python

Polymorphisme en Python

Polymorphisme en Python
Polymorphisme signifie « de nombreuses formes.” Le polymorphisme est une caractéristique importante de la programmation orientée objet (POO).  Lorsque la même méthode est déclarée plusieurs fois, à des fins multiples et dans différentes classes, on l'appelle polymorphisme. Une autre caractéristique de la POO est héritage, à travers lequel la classe enfant peut être créée en héritant des fonctionnalités de la classe parent. Parfois, le programmeur doit déclarer une méthode du même nom dans les classes parent et enfant à diverses fins. Ce type de tâche peut également être mis en œuvre en utilisant le polymorphisme. Cet article explique comment le polymorphisme peut être défini dans la programmation orientée objet (POO).

Exemple 1 : polymorphisme avec fonctions et objets

Le script suivant montre l'utilisation du polymorphisme entre deux classes différentes. Une fonction est utilisée pour créer l'objet de ces classes. La valeur de la variable nommée Couleur est initialisé dans le __init__() méthode à la fois du 'Perroquet' et le 'Autruche' classes au moment de la création de l'objet. le fonctionnalités() la méthode est définie dans les deux classes, mais la sortie de la méthode pour chaque classe est un peu différente. le Créer_Objet() la fonction est utilisée pour créer un objet de la classe. Cette fonction est exécutée deux fois pour créer l'objet dans le 'Perroquet' classe et  dans le 'Autruche' classer. Chacun appellera la méthode features() des deux classes et imprimera la sortie.

#!/usr/bin/env python3
# Définir la classe Parrot
classe Perroquet() :
def __init__(self,color):
soi.couleur = couleur
caractéristiques def (auto):
print("La couleur du perroquet est %s" %self.Couleur)
print("Le perroquet peut voler")
# Définir la classe Autruche
classe Autruche() :
def __init__(self,color):
soi.couleur = couleur
caractéristiques def (auto):
print("La couleur de l'autruche est %s" %self.Couleur)
print("L'autruche ne peut pas voler")
# Définir la fonction pour appeler la méthode de la classe
def Créer_Objet(Objet) :
Objet.fonctionnalités()
# Créer un objet de la classe Parrot
Créer_Objet(Perroquet('Vert'))
# Créer un objet de la classe Autruche
Créer_Objet(Autruche('Noir et Blanc'))

Production

La sortie suivante montre que l'objet du 'Perroquet' la classe est créée avec 'Vert' comme le Couleur valeur. La fonction imprime la sortie en appelant le fonctionnalités() méthode du 'Perroquet' classer. Ensuite, l'objet du 'Autruche' la classe est créée avec 'Noir et blanc' comme le Couleur valeur. La fonction imprime la sortie en appelant le fonctionnalités() méthode du 'Autruche' classer.

Exemple 2 : polymorphisme dans les méthodes de classe non liées

Comme dans l'exemple précédent, le script suivant montre l'utilisation du polymorphisme dans deux classes différentes, mais aucune fonction personnalisée n'est utilisée pour déclarer l'objet. le __init__() méthode à la fois du 'Directeur' et 'Employé de bureau' les classes initialiseront les variables nécessaires. Le polymorphisme est implémenté ici en créant le post_details() et un salaire() méthodes à l'intérieur des deux classes. Le contenu de ces méthodes est différent pour chacune de ces classes. Ensuite, les variables objet sont créées pour les deux classes et itérées par un pour une boucle. A chaque itération, le post_details() et un salaire() les méthodes sont appelées pour imprimer la sortie.

#!/usr/bin/env python3
# Définir une classe nommée Manager
Responsable de classe :
def __init__(self, name, department):
soi.nom = nom
soi.poste = 'Gestionnaire'
soi.département = département
# Définir la fonction pour définir les détails
def post_details(self):
si soi.département.supérieur() == 'HR' :
soi.de base = 30000
autre:
soi.de base = 25000
soi.maisonLoyer = 10000
soi.transports = 5000
print("Le message de %s est %s" %(self.nom, soi.Publier))
# Définir la fonction pour calculer le salaire
salaire def(auto):
salaire = soi.basique + soi.maisonLoyer + soi.transport
retour de salaire
# Définir une classe nommée Clerk
Secrétaire de classe :
def __init__(soi, nom):
soi.nom = nom
soi.poste = 'greffier'
# Définir la fonction pour définir les détails
def post_details(self):
soi.de base = 10000
soi.transports = 2000
print("Le message de %s est %s" %(self.nom, soi.Publier))
# Définir la fonction pour calculer le salaire
salaire def(auto):
salaire = soi.basique + soi.transport
retour de salaire
# Créer des objets pour les classes
manager = Manager("Kabir", "hr")
greffier = greffier("Robin")
# Appeler les mêmes fonctions des différentes classes
pour obj dans (gérant, commis):
obj.post_details()
print("Le salaire est ",obj.un salaire())

Production

La sortie suivante montre que l'objet du 'Manger' est utilisé dans la première itération de la pour boucle et le salaire du manager est imprimé après calcul. L'objet de la 'Employé de bureau' est utilisé dans la deuxième itération de la pour boucle et le salaire du commis est imprimé après calcul.

Exemple 3 : polymorphisme dans les méthodes de classe apparentées

Le script suivant montre l'utilisation du polymorphisme entre deux classes enfants. Ici, les deux 'Triangle' et 'Cercle' sont les classes enfant de la classe parent nommée 'Forme géométrique.' Selon l'héritage, la classe enfant peut accéder à toutes les variables et méthodes de la classe parent. le __init__() méthode du 'Forme géométrique' class est utilisé dans les deux classes enfants pour initialiser la variable Nom en utilisant le super() méthode. Les valeurs de la base et la taille du 'Triangle' la classe sera initialisée au moment de la création de l'objet. De la même manière, les valeurs de rayon du 'Cercle' la classe sera initialisée au moment de la création de l'objet. La formule pour calculer l'aire d'un triangle est ½ × base × la taille, qui est mis en œuvre dans le surface() méthode du 'Triangle' classer. La formule pour calculer l'aire d'un cercle est 3.14 × (rayon)2, qui est mis en œuvre dans le surface() méthode du 'Cercle' classer. Les noms des deux méthodes sont les mêmes, ici, mais le but est différent. Ensuite, une valeur de chaîne sera extraite de l'utilisateur pour créer un objet et appeler la méthode basée sur la valeur. Si l'utilisateur tape 'triangle', alors un objet du 'Triangle' classe sera créée, et si l'utilisateur tape 'cercle', alors un objet de la 'Cercle' la classe sera créée. Si l'utilisateur tape du texte sans « triangle » ou « cercle », alors aucun objet ne sera créé et un message d'erreur sera imprimé.

#!/usr/bin/env python3
# Définir la classe parente
classe Geometric_Shape :
def __init__(soi, nom):
soi.nom = nom
# Définir la classe enfant pour calculer l'aire du triangle
classe Triangle(Geometric_Shape):
def __init__(self,name, base, height):
super().__init__(nom)
soi.socle = socle
soi.hauteur = hauteur
zone de def (auto):
résultat = 0.5 * soi.base * soi.la taille
print("\nLa zone du %s = %5.2f" %(soi.nom, résultat))
# Définir la classe enfant pour calculer l'aire du cercle
classe Circle(Geometric_Shape):
def __init__(self,name, radius):
super().__init__(nom)
soi.rayon = rayon
zone de def (auto):
résultat = 3.14 * soi.rayon**2
print("\nLa zone du %s = %5.2f" %(soi.nom, résultat))
cal_area=input("Quelle zone voulez-vous calculer? triangle/cercle\n")
si zone_cal.supérieur()== 'TRIANGLE' :
base = float(input('Entrez la base du triangle : '))
height = float(input('Entrez la hauteur du triangle : '))
obj = Triangle('Triangle',base,hauteur)
obj.surface()
elif cal_area.upper()== 'CIRCLE' :
radius = float(input('Entrez le rayon du cercle : '))
obj = Cercle('Cercle',rayon)
obj.surface()
autre:
print("Mauvaise saisie")

Production

Dans la sortie suivante, le script est exécuté deux fois. La première fois, Triangle est pris en entrée et l'objet est initialisé par trois valeurs, 'Triangle', base, et la taille. Ces valeurs sont ensuite utilisées pour calculer l'aire du triangle et la sortie sera imprimée. La deuxième fois, cercle est pris en entrée, et l'objet est initialisé par deux valeurs, 'Cercle' et rayon. Ces valeurs sont ensuite utilisées pour calculer l'aire du cercle et la sortie sera imprimée.

Conclusion

Cet article a utilisé des exemples simples pour expliquer trois utilisations différentes du polymorphisme en Python. Le concept de polymorphisme peut également être appliqué sans classes, une méthode qui n'est pas expliquée ici. Cet article a aidé les lecteurs à en savoir plus sur la façon d'appliquer le polymorphisme dans la programmation Python orientée objet.

Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...
Comment changer les boutons gauche et droit de la souris sur un PC Windows 10
Il est tout à fait normal que tous les appareils de souris d'ordinateur soient conçus de manière ergonomique pour les droitiers. Mais il existe des so...