Polymorphisme à Python

Polymorphisme à Python
Polymorphisme signifie «plusieurs formes.”Polymorphisme Une caractéristique importante de la programmation orientée objet (POO). Lorsque la même méthode est déclarée plusieurs fois, à plusieurs fins et dans différentes classes, alors elle est appelée polymorphisme. Une autre caractéristique de l'OOP est héritage, à travers lequel la classe infantile peut être créée en héritant des fonctionnalités de la classe parentale. Parfois, cela oblige le programmeur à déclarer une méthode du même nom dans les classes parentales et enfants à 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 des fonctions et des 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 des deux 'Perroquet' et le 'Autruche'Classes au moment de la création d'objets. Le caractéristiques() 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 Create_object () 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' classe. Chacun appellera la méthode des fonctionnalités () des deux classes et imprimera la sortie.

#!/ usr / bin / env python3
# Définir la classe de perroquet
Class Parrot ():
def __init __ (soi, couleur):
soi.couleur = couleur
Fonctionnalités Def (auto):
imprimer ("La couleur du perroquet est% s"% self.couleur)
imprimer ("le perroquet peut voler")
# Définir la classe d'autruche
classe d'autruche ():
def __init __ (soi, couleur):
soi.couleur = couleur
Fonctionnalités Def (auto):
Imprimer ("La couleur de l'autruche est% s"% self.couleur)
imprimer ("L'autruche ne peut pas voler")
# Définissez la fonction pour appeler la méthode de la classe
def create_object (objet):
Objet.caractéristiques()
# Créer un objet de classe de perroquet
Create_object (Parrot ('vert'))
# Créer un objet de classe d'autruche
Create_object (Autrrich ('noir et blanc'))

Sortir

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 caractéristiques() Méthode du 'Perroquet' classe. 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 caractéristiques() Méthode du 'Autruche' classe.

Exemple 2: Polymorphisme dans les méthodes de classe non apparenté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 des deux 'Directeur' et 'Greffier'Les classes initialiseront les variables nécessaires. Le polymorphisme est mis en œuvre ici en créant le post_details () et 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 d'objet sont créées pour les deux classes et itérées par un pour une boucle. Dans chaque itération, le post_details () et salaire() Les méthodes sont appelées pour imprimer la sortie.

#!/ usr / bin / env python3
# Définir une classe nommée manager
Gestionnaire de classe:
Def __init __ (soi, nom, département):
soi.nom = nom
soi.poster = 'manager'
soi.département = département
# Définir la fonction pour définir les détails
def post_details (self):
Si vous-même.département.Upper () == 'hr':
soi.Basique = 30000
autre:
soi.Basique = 25000
soi.logerent = 10000
soi.Transport = 5000
imprimer ("le poste de% s est% s"% (soi.Nom, soi.poste))
# Définir la fonction pour calculer le salaire
Def Salaire (soi):
Salaire = soi.Basic + Self.logerent + soi.transport
Salaire de retour
# Définir une classe nommée greffier
Greffier de classe:
def __init __ (self, nom):
soi.nom = nom
soi.Post = «commis»
# Définir la fonction pour définir les détails
def post_details (self):
soi.Basique = 10000
soi.Transport = 2000
imprimer ("le poste de% s est% s"% (soi.Nom, soi.poste))
# Définir la fonction pour calculer le salaire
Def Salaire (soi):
Salaire = soi.Basic + Self.transport
Salaire de retour
# Créer des objets pour les classes
Manager = Manager ("Kabir", "HR")
greffier = greffier ("Robin")
# Appelez les mêmes fonctions des différentes classes
pour obj dans (directeur, greffier):
obj.post_details ()
imprimer ("le salaire est", obj.salaire())

Sortir

La sortie suivante montre que l'objet du 'Manger'La classe est utilisée dans la première itération du pour Loop et le salaire du gestionnaire sont imprimés après le calcul. L'objet du 'Greffier'La classe est utilisée dans la deuxième itération du pour la boucle et le salaire du greffier sont imprimés après le calcul.

Exemple 3: Polymorphisme dans les méthodes de classe associées

Le script suivant montre l'utilisation du polymorphisme entre deux classes enfants. Ici, les deuxTriangle' et 'Cercle«sont les classes enfants de la classe parent nommée»Forme géométrique.'Selon l'héritage, la classe infantile peut accéder à toutes les variables et méthodes de la classe parentale. Le __init __ () Méthode du 'Forme géométrique'La classe est utilisée dans les deux classes enfants pour initialiser la variable nom en utilisant le super() méthode. Les valeurs du base et hauteur de la 'Triangle'La classe sera initialisée au moment de la création d'objets. De la même manière, les valeurs de rayon du 'Cercle'La classe sera initialisée au moment de la création d'objets. La formule pour calculer la zone d'un triangle est ½ × base × hauteur, qui est implémenté dans le zone() Méthode du 'Triangle' classe. La formule pour calculer la surface d'un cercle est 3.14 × (rayon)2, qui est implémenté dans le zone() Méthode du 'Cercle' classe. Les noms des deux méthodes sont les mêmes, ici, mais le but est différent. Ensuite, une valeur de chaîne sera tirée de l'utilisateur pour créer un objet et appeler la méthode en fonction de la valeur. Si l'utilisateur tape «triangle», alors un objet du »Triangle' La classe sera créée, et si l'utilisateur tape «cercle», alors un objet du '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 parent
Class Geometric_shape:
def __init __ (self, nom):
soi.nom = nom
# Définissez la classe d'enfants pour calculer la zone de triangle
Triangle de classe (géométric_shape):
Def __init __ (soi, nom, base, hauteur):
super().__init __ (nom)
soi.base = base
soi.hauteur = hauteur
zone def (soi):
résultat = 0.5 * Self.base * soi.hauteur
imprimer ("\ nLe zone du% s =% 5.2f "% (soi.nom, résultat))
# Définissez la classe d'enfants pour calculer la zone de cercle
CLASSE CIRCLE (GEOMETRIC_SHAPE):
def __init __ (soi, nom, rayon):
super().__init __ (nom)
soi.rayon = rayon
zone def (soi):
résultat = 3.14 * Self.rayon ** 2
imprimer ("\ nLe zone du% s =% 5.2f "% (soi.nom, résultat))
cal_area = entrée ("Quelle zone souhaitez-vous calculer? triangle / cercle \ n ")
Si Cal_area.Upper () == 'Triangle':
base = float (entrée ('Entrez la base du triangle:'))
hauteur = float (entrée ('Entrez la hauteur du triangle:'))
obj = triangle («triangle», base, hauteur)
obj.zone()
Elif Cal_area.Upper () == 'Circle':
rayon = float (entrée ('Entrez le rayon du cercle:'))
obj = cercle ('cercle', rayon)
obj.zone()
autre:
imprimer ("mauvaise entrée")

Sortir

Dans la sortie suivante, le script est exécuté deux fois. La première fois, Triangle est pris comme l'entrée et l'objet est initialisé par trois valeurs, 'Triangle', base, et hauteur. Ces valeurs sont ensuite utilisées pour calculer la zone 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 la zone du cercle et la sortie sera imprimée.

Conclusion

Cet article a utilisé des exemples faciles pour expliquer trois utilisations différentes du polymorphisme à 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 basée sur des objets.