Dans ce tutoriel, nous découvrirons le polymorphisme, les différents types de polymorphisme et comment nous pouvons les implémenter en Python à l'aide d'exemples.
Qu'est-ce que le polymorphisme?
La signification littérale du polymorphisme est la condition d'occurrence sous différentes formes.
Le polymorphisme est un concept très important en programmation. Il fait référence à l'utilisation d'une seule entité de type (méthode, opérateur ou objet) pour représenter différents types dans différents scénarios.
Prenons un exemple:
Exemple 1: Polymorphisme dans l'opérateur d'addition
Nous savons que l' +
opérateur est largement utilisé dans les programmes Python. Mais, il n'a pas une seule utilisation.
Pour les types de données entiers, l' +
opérateur est utilisé pour effectuer une opération d'addition arithmétique.
num1 = 1 num2 = 2 print(num1+num2)
Par conséquent, les extrants du programme ci-dessus 3.
De même, pour les types de données chaîne, l' +
opérateur est utilisé pour effectuer la concaténation.
str1 = "Python" str2 = "Programming" print(str1+" "+str2)
En conséquence, le programme ci-dessus génère la programmation Python.
Ici, nous pouvons voir qu'un seul opérateur +
a été utilisé pour effectuer différentes opérations pour des types de données distincts. C'est l'une des occurrences les plus simples de polymorphisme en Python.
Polymorphisme de fonction en Python
Certaines fonctions en Python sont compatibles pour s'exécuter avec plusieurs types de données.
Une de ces fonctions est la len()
fonction. Il peut fonctionner avec de nombreux types de données en Python. Regardons quelques exemples de cas d'utilisation de la fonction.
Exemple 2: Fonction len () polymorphe
print(len("Programiz")) print(len(("Python", "Java", "C"))) print(len(("Name": "John", "Address": "Nepal")))
Production
9 3 2
Ici, nous pouvons voir que de nombreux types de données tels que chaîne, liste, tuple, ensemble et dictionnaire peuvent fonctionner avec la len()
fonction. Cependant, nous pouvons voir qu'il renvoie des informations spécifiques sur des types de données spécifiques.

Polymorphisme de classe en Python
Le polymorphisme est un concept très important dans la programmation orientée objet.
Pour en savoir plus sur la POO en Python, visitez: Programmation orientée objet Python
Nous pouvons utiliser le concept de polymorphisme lors de la création de méthodes de classe car Python permet à différentes classes d'avoir des méthodes avec le même nom.
Nous pouvons ensuite généraliser l'appel de ces méthodes en ignorant l'objet avec lequel nous travaillons. Regardons un exemple:
Exemple 3: Polymorphisme dans les méthodes de classe
class Cat: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a cat. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Meow") class Dog: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a dog. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Bark") cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) for animal in (cat1, dog1): animal.make_sound() animal.info() animal.make_sound()
Production
Meow je suis un chat. Je m'appelle Kitty. J'ai 2,5 ans. Meow Bark Je suis un chien. Mon nom est Fluffy. J'ai 4 ans. Écorce
Ici, nous avons créé deux classes Cat
et Dog
. Ils partagent une structure similaire et ont les mêmes noms de méthode info()
et make_sound()
.
Cependant, notez que nous n'avons pas créé de superclasse commune ni lié les classes de quelque manière que ce soit. Même dans ce cas, nous pouvons regrouper ces deux objets différents dans un tuple et le parcourir en utilisant une variable animale commune. C'est possible en raison du polymorphisme.
Polymorphisme et héritage
Comme dans d'autres langages de programmation, les classes enfants en Python héritent également des méthodes et des attributs de la classe parent. Nous pouvons redéfinir certaines méthodes et certains attributs spécifiquement pour s'adapter à la classe enfant, connue sous le nom de remplacement de méthode .
Le polymorphisme nous permet d'accéder à ces méthodes et attributs surchargés qui ont le même nom que la classe parente.
Regardons un exemple:
Exemple 4: remplacement de méthode
from math import pi class Shape: def __init__(self, name): self.name = name def area(self): pass def fact(self): return "I am a two-dimensional shape." def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.length = length def area(self): return self.length**2 def fact(self): return "Squares have each angle equal to 90 degrees." class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi*self.radius**2 a = Square(4) b = Circle(7) print(b) print(b.fact()) print(a.fact()) print(b.area())
Production
Cercle Je suis une forme bidimensionnelle. Les carrés ont chaque angle égal à 90 degrés. 153,93804002589985
Ici, nous pouvons voir que les méthodes telles que __str__()
, qui n'ont pas été remplacées dans les classes enfants, sont utilisées à partir de la classe parente.
En raison du polymorphisme, l'interpréteur Python reconnaît automatiquement que la fact()
méthode de l'objet a
(classe Square) est remplacée. Donc, il utilise celui défini dans la classe enfant.
D'autre part, comme la fact()
méthode de l'objet b n'est pas remplacée, elle est utilisée à partir de la classe Parent Shape.

Remarque : la surcharge de méthode , un moyen de créer plusieurs méthodes avec le même nom mais des arguments différents, n'est pas possible en Python.