Polymorphisme dans Python avec des EXEMPLES

⚡ Résumé intelligent

Polymorphisme dans Python Permet à une interface unique de gérer des objets de types différents ; ainsi, une même méthode ou un même opérateur peut se comporter différemment selon l’objet. Cela se manifeste par la surcharge d’opérateurs, les fonctions intégrées, les méthodes définies par l’utilisateur et l’héritage. Python programmes.

  • (I.e. Définition: Le polymorphisme signifie « plusieurs formes », permettant à une interface d'agir sur différents types de données ou classes.
  • ☑️ Operasurcharge du tore : L'opérateur + additionne des nombres mais concatène des chaînes de caractères, illustrant ainsi le polymorphisme des opérateurs.
  • ✅ Fonctions intégrées : Les fonctions telles que len() fonctionnent aussi bien sur les chaînes de caractères que sur les listes et les dictionnaires.
  • 🧪 Méthodes définies par l'utilisateur : Les classes peuvent partager des noms de méthodes comme area() et perimeter() pour des formes différentes.
  • ️ héritage: La surcharge de méthodes permet à une classe enfant de redéfinir une méthode parente lors de l'exécution.
  • 🤖 Pertinence de l'IA : Les bibliothèques d'apprentissage automatique réutilisent des interfaces partagées telles que fit() et forward() entre les modèles.

Polymorphisme dans Python

Qu'est-ce que le polymorphisme ?

Le polymorphisme peut être défini comme une condition qui se présente sous de nombreuses formes différentes. C'est un concept dans Python programmation dans laquelle un objet défini dans Python peut être utilisé de différentes manières. Il permet au programmeur de définir plusieurs méthodes dans une classe dérivée et porte le même nom que celui présent dans la classe parent. De tels scénarios prennent en charge la surcharge de méthodes dans Python.

Polymorphisme dans Operajeudi

Un opérateur en Python permet d'effectuer des tâches mathématiques et plusieurs autres tâches de programmation. Par exemple, l'opérateur « + » permet d'effectuer une addition entre deux types entiers dans Python, et de la même manière, le même opérateur aide à concaténer des chaînes dans Python la programmation.

Prenons un exemple de + (plus) opérateur en Python pour afficher une application du polymorphisme dans Python comme indiqué ci-dessous:

Python Code:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

Sortie :

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

L'exemple ci-dessus peut également être considéré comme un exemple de surcharge des opérateurs.

Polymorphisme dans les méthodes définies par l'utilisateur

Une méthode définie par l'utilisateur dans le Python Le langage de programmation sont des méthodes créées par l'utilisateur et déclarées à l'aide du mot-clé def avec le nom de la fonction.

Polymorphisme dans le Python Le langage de programmation est obtenu grâce à la surcharge et à la substitution de méthodes. Python définit des méthodes avec le mot-clé def et avec le même nom dans la classe enfant et parent.

Prenons l'exemple suivant comme indiqué ci-dessous : –

Python Code:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
class Circle:
    def __init__(self, radius):
    self.r = radius
def perimeter(self):
    return 2 * pi * self.r
def area(self):
    return pi * self.r * * 2
# Initialize the classes
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

Sortie :

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

Dans le code ci-dessus, il existe deux méthodes définies par l'utilisateur, périmètre et zone, définies dans les classes cercle et carré.

Comme indiqué ci-dessus, la classe cercle et la classe carré invoquent le même nom de méthode affichant la caractéristique du polymorphisme pour fournir le résultat requis.

Polymorphisme dans les fonctions

Les fonctions intégrées dans Python sont conçus et rendus compatibles pour exécuter plusieurs types de données. Dans Python, len() est l'une des principales fonctions intégrées.

Elle fonctionne avec plusieurs types de données : listes, tuples, chaînes de caractères et dictionnaires. La fonction len() renvoie des informations précises, adaptées à chacun de ces types de données.

La figure suivante montre comment le polymorphisme peut être appliqué dans Python en ce qui concerne les fonctions intégrées : –

Polymorphisme dans les fonctions

Le programme suivant aide à illustrer l'application du polymorphisme dans Python: -

Python Code:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

Sortie :

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

Polymorphisme dans les fonctions

Dans l'exemple ci-dessus, la fonction len() de Python effectue un polymorphisme pour les types de données chaîne, liste et dictionnaire, respectivement.

Polymorphisme et héritage

Héritage en Python peut être défini comme le concept de programmation dans lequel une classe enfant définie hérite des propriétés d'une autre classe de base présente dans Python.

Il y a deux clés Python concepts appelés remplacement de méthode et surcharge de méthode.

  • En surcharge de méthode, Python fournit la fonctionnalité de créer des méthodes portant le même nom pour exécuter ou exécuter différentes fonctionnalités dans un morceau de code donné. Il permet de surcharger les méthodes et de les utiliser pour effectuer différentes tâches en termes plus simples.
  • Dans Remplacement de méthode, Python remplace la valeur qui partage un nom similaire dans les classes parent et enfant.

Prenons l'exemple suivant de polymorphisme et d'héritage comme indiqué ci-dessous : –

Python Code:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

Sortie :

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

Dans le code ci-dessus, les méthodes ont le même nom défini comme méthode init et méthode Area1. Les objets de classe square et rectangle sont ensuite utilisés pour invoquer les deux méthodes pour effectuer différentes tâches et fournir la sortie de la zone du carré et du rectangle.

Polymorphisme avec les méthodes de classe

Le Python la programmation permet aux programmeurs de réaliser le polymorphisme et la surcharge de méthodes avec des méthodes de classe. Les différentes classes de Python peut avoir des méthodes déclarées sous le même nom dans le Python code.

In Python, deux classes différentes peuvent être définies. L’une serait la classe enfant et dérive les attributs d’une autre classe définie appelée classe parent.

L'exemple suivant illustre le concept de polymorphisme avec des méthodes de classe : –

Python Code:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

Sortie :

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

Dans le code ci-dessus, deux classes différentes nommées flipkart et amazon utilisent les mêmes noms de méthode info et init pour fournir les cotations de prix respectives du produit et illustrer davantage le concept de polymorphisme dans Python.

Différence entre la surcharge de méthode et le polymorphisme au moment de la compilation

Dans le polymorphisme au moment de la compilation, le compilateur du Python le programme résout l’appel. Le polymorphisme au moment de la compilation est réalisé grâce à une surcharge de méthodes.

Le Python le compilateur ne résout pas les appels pendant l'exécution pour le polymorphisme. Il est également classé comme méthode de substitution dans laquelle les mêmes méthodes portent des signatures ou des propriétés similaires, mais elles font partie de classes différentes.

FAQ

Duck typing laisse Python Il convient de juger un objet par les méthodes qu'il propose plutôt que par son type de classe. Si un objet possède la méthode requise, il fonctionne, selon le principe « si ça ressemble à un canard et que ça cancane comme un canard, c'est un canard ».

Pas de manière traditionnelle. Lorsque deux méthodes portent le même nom, c'est la dernière définition qui prévaut. Python Au lieu de cela, elle simule la surcharge en utilisant des arguments par défaut, des *args de longueur variable ou le décorateur functools.singledispatch pour gérer différents types d'arguments au sein d'une seule fonction.

AbdostracLes classes de base, issues du module abc, déclarent des méthodes que chaque sous-classe doit implémenter. Elles imposent une interface partagée, permettant ainsi l'utilisation polymorphe de sous-classes non apparentées. Python garantit que chacun d'eux fournit les méthodes requises.

Le polymorphisme améliore la réutilisabilité, la flexibilité et l'évolutivité du code. Une seule fonction ou interface peut traiter plusieurs types d'objets, ce qui réduit la duplication, simplifie la maintenance et permet d'ajouter de nouvelles classes sans réécrire le code qui les utilise déjà.

Oui. Par canard typingDes classes non liées qui implémentent la même méthode peuvent être utilisées de manière interchangeable sans parent commun. OperaLa surcharge de fonctions et les fonctions intégrées telles que len() offrent également un polymorphisme sans héritage.

Le polymorphisme apparaît lorsqu'une fonction traite des chaînes de caractères, des listes ou des objets personnalisés, dans les pilotes de base de données exposant une API unique à travers différents moteurs, et dans les boîtes à outils d'interface graphique où de nombreux widgets partagent des méthodes draw() ou update() appelées via une interface unique.

Les frameworks d'IA dépendent du polymorphisme. En PythonTorch, chaque modèle hérite de nn.Module et redéfinit forward() ; dans scikit-learn, les estimateurs partagent les méthodes fit() et predict(), de sorte que différents algorithmes s'exécutent via une interface cohérente et interchangeable.

Oui. GitHub Copilot et les assistants IA agents génèrent des fonctions de type « duck », suggèrent des abstract classes de base, et refactoriser les méthodes répétées en conceptions polymorphes à partir d'une brève invite. RevVérifiez le résultat pour confirmer que la logique et les interfaces sont correctes.

Résumez cet article avec :