Qu'est-ce que le polymorphisme en Python ? Polymorphisme expliqué avec des exemples
Publié: 2021-03-05Table des matières
introduction
Python est un langage de programmation de haut niveau, interprété et open source. Il a beaucoup retenu l'attention de nombreux programmeurs et développeurs car il prend en charge des bibliothèques qui aident dans de nombreuses tâches telles que l'analyse exploratoire de données, la programmation d'interface graphique, etc. De plus, la programmation en python est très intéressante.
Nous allons discuter d'une fonctionnalité intéressante de python dans cet article. Alors, commençons!
Qu'est-ce que le polymorphisme ?
Le mot polymorphisme est dérivé du mot grec poly (signifiant plusieurs) et morphisme (formes). Cela signifie qu'un seul nom de fonction ou de méthode peut avoir plusieurs formes. Et cela répond au souhait d'éviter la duplication de code dans l'implémentation.
Mais le polymorphisme en python est un peu différent du polymorphisme dans d'autres langages de programmation. Les langages de programmation tels que Java et C++ prennent en charge le polymorphisme au moment de la compilation (surcharge de méthode). Dans la surcharge de méthode, plusieurs méthodes peuvent avoir le même nom de méthode mais différer dans leur signature de paramètre. Cette fonctionnalité n'est pas prise en charge par Python. Si plusieurs méthodes ont la même fonction, l'implémentation de fonction la plus récente remplacera l'implémentation de fonction précédente.
Polymorphisme de fonction
Le polymorphisme de fonction en python peut être classé en deux polymorphismes définis par l'utilisateur et en polymorphismes prédéfinis.
Nous pouvons implémenter un polymorphisme défini par l'utilisateur pour appeler la même fonction avec une signature de paramètre différente, et cela peut être considéré comme une petite compensation à l'indisponibilité de la surcharge de méthode en python. Passons en revue un exemple de code
def mul (a,b,c= 1 ): retourner a*b*c ; imprimer(mul( 1 , 2 , 3 )) imprimer(mul( 1 , 2 )) |
Dans le code ci-dessus, même si le nombre de paramètres passés n'est pas égal, les deux instructions d'impression font référence à la même méthode. Dans le deuxième appel de fonction, le paramètre c est affecté avec une valeur par défaut de 1.
De même, peu de méthodes prédéfinies en python présentent des fonctionnalités de polymorphisme, où une seule méthode peut accepter des paramètres de différents types de données. Des méthodes comme len() présentent cette fonctionnalité. Et voici le code pour illustrer cela.
imprimer(len([ 1 , 2 , 3 , 4 ])) imprimer(len(( 1 , 2 , 3 , 4 ))) print(len( "python" )) print(len({ "key1" : "value1" , "key2" : "value2" })) |
Dans le code ci-dessus, la même méthode len() est utilisée pour une liste, un tuple, une chaîne et un dictionnaire.
Checkout : Applications Python dans le monde réel
Surcharge de l'opérateur
Un opérateur comme '+' peut être utilisé de plusieurs façons. Par exemple, il peut être utilisé pour ajouter deux nombres, des chaînes, ainsi que des listes, etc. Et voici le code pour le démontrer.
l1=[ 1 , 2 , 3 ] l2=[ 3 , 4 , 5 ] n1= 2 n2= 3 s1= "hé" s2= "là" imprimer(l+l1) impression(s1+s2) imprimer(n1+n2) |
Remplacer la méthode
Le remplacement de méthode est également considéré comme un polymorphisme d'exécution et est pris en charge par de nombreux langages tels que Java, C++ et Python.
Cette fonctionnalité est liée à l'héritage, une classe enfant en python hérite des fonctions membres et des variables membres de sa classe parent. Et si nous estimons que l'implémentation de la méthode de la classe parent n'est pas pertinente, nous pouvons remplacer cette méthode dans la classe enfant. Et la modification des fonctions membres selon les exigences de la classe enfant est appelée remplacement de méthode.
classe deux_roues : def carburant (auto): print( "le deux-roues a besoin de carburant pour fonctionner" ) capacité def (auto): print( "les vélos sont adaptés pour un maximum de 2 personnes" ) classe electric_bike (two_wheeler): def carburant (auto): print( "les vélos électriques fonctionnent sur batterie" ) classe petrol_bike (two_wheeler): def carburant (auto): print( "vélo essence roule à l'essence" ) vélo=deux_roues() vélo électrique=vélo_électrique() pbike=vélo_essence() vélo.carburant() bike.capacity() ebike.carburant() ebike.capacité() pbike.carburant() pbike.capacity() |
Dans le code ci-dessus, two_wheeler est la classe parent et electric_bike, petrol_bike sont les classes enfant. Et les méthodes fuel(), capacity() sont héritées par les classes filles electric_bike et petrol_bike. Maintenant, nous pouvons mettre à jour l'implémentation des méthodes si nécessaire, et à l'intérieur de la classe electric_bike, nous avons réimplémenté la méthode fuel(), réimplémenté de la même manière la méthode fuel() dans la classe petrol_bike.
Par exemple, dans le code ebike.fuel() imprime "les vélos électriques fonctionnent sur batterie" et pbike.fuel() imprime les vélos à essence qui fonctionnent à l'essence".
Polymorphisme dans les méthodes de classe
Python permet à différentes classes d'avoir le même nom de méthode, et cela relève de la fonctionnalité de polymorphisme. Et l'invocation de la méthode est basée sur l'objet que nous utilisons pour appeler la méthode.
vélo de classe : def carburant (auto): print( "le vélo n'a pas besoin de carburant!" ) capacité def (auto): print( "les vélos conviennent à une personne seule" ) classe electric_bike : def carburant (auto): print( "les vélos électriques fonctionnent sur batterie" ) capacité def (auto): print( "les vélos électriques conviennent pour un maximum de 2 personnes" ) classe petrol_bike : def carburant (auto): print( "vélo essence roule à l'essence" ) capacité def (auto): print( "les vélos à essence conviennent pour un maximum de 2 personnes" ) ecobike=vélo() vélo électrique=vélo_électrique() pbike=vélo_essence() l=[ecobike,ebike,pbike] pour obj en l : obj.carburant() obj. capacité () |
Dans le code ci-dessus, nous avons créé trois objets des trois classes bicycle, electric_bike et petrol_bike. Et les trois classes ont les mêmes noms de méthode. Maintenant, c'est la tâche du compilateur de décider quelle méthode doit être invoquée en fonction du type d'objet utilisé pour invoquer la méthode.
Par exemple, ecobike.fuel() invoquera la méthode fuel() de la classe bicycle et ebike.fuel() invoquera la méthode fuel() de la classe electric_bike. Nous ajoutons tous ces objets à une liste et à chaque itération, nous allons appeler les mêmes noms de fonction mais le type d'objet qui invoque la méthode va changer. Dans la première itération, les méthodes de la classe bicycle sont appelées, et les méthodes de electric_bike, petrol_bike dans les itérations suivantes.
Lire : Idées et sujets de projet Python
Conclusion
Dans cet article, nous avons compris ce que signifie le polymorphisme, expliqué en quoi Python est différent dans le cas d'une surcharge de méthode. Nous avons parcouru des démonstrations de diverses possibilités de polymorphisme en pythons, telles que la surcharge d'opérateurs, le polymorphisme de fonctions, le remplacement de méthodes et le polymorphisme dans les méthodes de classe.
Maintenant que vous êtes au courant du polymorphisme en python, implémentez votre prochain code python en utilisant toutes ces fonctionnalités !
Si vous êtes curieux d'en savoir plus sur la science des données, consultez le diplôme PG de IIIT-B & upGrad en science des données qui est créé pour les professionnels en activité et propose plus de 10 études de cas et projets, des ateliers pratiques, un mentorat avec des experts de l'industrie, 1- on-1 avec des mentors de l'industrie, plus de 400 heures d'apprentissage et d'aide à l'emploi avec les meilleures entreprises.