Polymorphisme en Python (avec exemples)

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 dans la fonction len () en Python

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 Catet 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.

Polymorphisme dans les classes parent et enfant en Python

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.

Articles intéressants...