les méthodes magiques
En Python, les fonctions magiques, comme __str__
, sont appelées méthodes spéciales ou méthodes magiques (en anglais, "special methods" ou "magic methods").
Ces méthodes sont définies avec un double underscore (aussi appelé "dunder" pour "double underscore") au début et à la fin de leur nom, par exemple __init__
, __str__
, ou __len__
.
Rôle des méthodes spéciales
Les méthodes spéciales permettent d'ajouter des comportements particuliers aux objets. Elles sont automatiquement appelées dans des contextes spécifiques, notamment pour surcharger des opérateurs ou personnaliser le comportement d'une classe.
Quelques exemples courants de méthodes spéciales
Méthode spéciale | Usage |
---|---|
__init__(self, ...) |
Méthode d'initialisation appelée lors de la création d'une instance (constructeur). |
__str__(self) |
Retourne une représentation en chaîne de caractères de l'objet (utilisée avec print ). |
__repr__(self) |
Retourne une représentation officielle de l'objet (utilisée pour le débogage). |
__len__(self) |
Définit la réponse à len(obj) pour l'objet. |
__getitem__(self, i) |
Permet de rendre l'objet indexable (obj[i] ). |
__setitem__(self, i, val) |
Permet de modifier un élément via un index (obj[i] = val ). |
__call__(self, ...) |
Rend un objet "appelable" comme une fonction (obj() ). |
__eq__(self, other) |
Définit le comportement de l'opérateur == . |
__add__(self, other) |
Définit le comportement de l'opérateur + . |
Exemple d'utilisation : __str__
vs __repr__
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
def __str__(self):
return f"{self.nom}, {self.age} ans"
def __repr__(self):
return f"Personne(nom='{self.nom}', age={self.age})"
# Exemple
p = Personne("Alice", 30)
print(p) # Appelle __str__ -> "Alice, 30 ans"
print(repr(p)) # Appelle __repr__ -> "Personne(nom='Alice', age=30)"
Points clés
- Double underscore : Toutes les méthodes spéciales ont des noms entourés de
__
. - Automatisation : Ces méthodes sont appelées automatiquement dans des contextes appropriés.
- Surcharge : Elles permettent de personnaliser le comportement d'une classe pour le rendre plus intuitif ou adapté.