Aller au contenu

Polymorphisme

471 mots·3 mins·
Cours Python Python Polymorphisme
Ayédoun Châ-Fine ADEBI
Auteur
Ayédoun Châ-Fine ADEBI
Sommaire

T’as déjà entendu parler du polymorphisme en Python, mais ça te semble encore flou ? Imagine un ninja qui change de technique en fonction de son adversaire : le polymorphisme, c’est un peu ça en programmation. Il permet d’utiliser une même interface pour différents types d’objets, rendant ton code plus flexible et réutilisable.


1. C’est quoi le polymorphisme ?
#

En gros, c’est la capacité d’un objet à se comporter différemment selon son contexte. En Python, ça s’applique surtout aux classes et aux méthodes qui peuvent être redéfinies sans changer leur nom.

2. Le polymorphisme avec les classes
#

En POO, t’as des classes parent et enfant. L’idée, c’est que les classes enfant peuvent redéfinir des méthodes tout en gardant le même nom. Exemple classique avec des animaux :

class Animal:
    def parler(self):
        pass  # Méthode à redéfinir

class Chien(Animal):
    def parler(self):
        return "Wouf!"

class Chat(Animal):
    def parler(self):
        return "Miaou!"

# Utilisation polymorphique
animaux = [Chien(), Chat()]

for animal in animaux:
    print(animal.parler())  # Chaque animal réagit selon son type

💡 Ici, parler() est redéfini pour chaque animal, mais on l’appelle de la même façon.


3. Le polymorphisme avec les fonctions
#

Les fonctions en Python peuvent accepter des objets différents tant qu’ils respectent un certain contrat. Pas besoin de définir un type strict, Python est dynamique !

def faire_parler(animal):
    print(animal.parler())

faire_parler(Chien())  # Wouf!
faire_parler(Chat())   # Miaou!

Python s’en fiche du type exact de animal, tant qu’il a une méthode parler(). C’est ce qu’on appelle le duck typing : “Si ça marche comme un canard, alors c’est un canard”.


4. Le polymorphisme avec les opérateurs
#

Tu peux aussi redéfinir le comportement des opérateurs (+, -, etc.) grâce aux méthodes magiques.

class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y

    def __add__(self, other):
        return Point(self.x + other.x, self.y + other.y)

    def __str__(self):
        return f"({self.x}, {self.y})"

p1 = Point(2, 3)
p2 = Point(4, 1)

print(p1 + p2)  # (6, 4)

🔹 Ici, on redéfinit + pour additionner des objets Point au lieu de simples nombres.


5. Pourquoi utiliser le polymorphisme ?
#

✅ Code plus propre et maintenable
✅ Réduction du copier-coller (DRY : Don’t Repeat Yourself)
✅ Plus de flexibilité dans le design

Le polymorphisme, c’est un outil puissant quand tu veux coder de manière modulaire et évolutive. Au lieu d’écrire des conditions à rallonge du genre if isinstance(obj, TypeX): ..., tu laisses Python gérer ça pour toi.


Conclusion
#

Si tu veux écrire du code propre et scalable, le polymorphisme est ton allié. Il te permet d’écrire du code générique tout en gérant des cas spécifiques sans te casser la tête.

💡 Retiens juste que tant qu’un objet répond à la bonne méthode, Python le considère valide, peu importe son type !

T’as capté ? Maintenant, applique ça dans tes projets et deviens un ninja du code ! 🚀