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.