Méthodes magiques : __str__ et __repr__
Implémentez des méthodes spéciales pour obtenir une représentation lisible des objets.
Méthodes magiques : __str__ et __repr__ est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Que sont les méthodes magiques ?
Les méthodes magiques (dunder) sont des méthodes spéciales dont le nom contient deux traits de soulignement et que Python appelle dans des contextes précis, comme l’affichage ou la comparaison.
class Foo:
def __str__(self):
return "I am Foo"
f = Foo()
print(f) # I am Foo
print(str(f)) # I am Foo__repr__ : représentation pour les développeurs
__repr__ doit renvoyer une chaîne non ambiguë qui permet idéalement de recréer l’objet. Elle s’affiche dans le REPL et est utilisée par repr().
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
p = Point(3, 4)
print(repr(p)) # Point(3, 4)__str__ : représentation pour les utilisateurs
__str__ fournit une chaîne compréhensible par les utilisateurs. print() et str() l’appellent. En son absence, Python utilise __repr__ comme solution de repli.
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
def __str__(self):
return f"{self.celsius}°C"
def __repr__(self):
return f"Temperature({self.celsius})"
t = Temperature(100)
print(t) # 100°C
print(repr(t)) # Temperature(100)Quand chacune est appelée
__str__ : print(), str(), chaînes f. __repr__ : REPL, repr(), conteneurs affichant leurs éléments.
class Item:
def __str__(self): return "str"
def __repr__(self): return "repr"
x = Item()
print(x) # str
print([x]) # [repr] ← list uses repr for elements__format__ pour un formatage personnalisé
Définissez __format__ pour contrôler l’affichage de votre objet dans les chaînes f utilisant des spécifications de format.
class Money:
def __init__(self, amount):
self.amount = amount
def __format__(self, spec):
if spec == "usd":
return f"${self.amount:.2f}"
return str(self.amount)
m = Money(9.5)
print(f"{m:usd}") # $9.50__bool__ pour la valeur de vérité
__bool__ permet d’évaluer votre objet dans des contextes booléens. Renvoyez True ou False.
class Bag:
def __init__(self, items):
self.items = items
def __bool__(self):
return len(self.items) > 0
b = Bag([])
if not b:
print("Bag is empty") # Bag is empty__len__ pour len()
__len__ permet d’utiliser len(obj). Il est également utilisé par __bool__ lorsqu’aucun __bool__ n’est défini.
class Stack:
def __init__(self):
self.data = []
def push(self, v): self.data.append(v)
def __len__(self):
return len(self.data)
s = Stack()
s.push(1)
print(len(s)) # 1__eq__ pour l’égalité
Définissez __eq__ pour préciser ce qui rend deux instances égales avec ==.
class Vector:
def __init__(self, x, y):
self.x, self.y = x, y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
print(Vector(1,2) == Vector(1,2)) # TrueAssocier __hash__ à __eq__
Lorsque vous définissez __eq__, Python affecte None à __hash__, ce qui rend l’objet non hachable. Définissez également __hash__ si vous devez placer l’objet dans des ensembles ou des dictionnaires.
class Point:
def __init__(self, x, y): self.x, self.y = x, y
def __eq__(self, o): return (self.x, self.y) == (o.x, o.y)
def __hash__(self): return hash((self.x, self.y))
pts = {Point(1,2), Point(1,2)}
print(len(pts)) # 1__add__ et l’arithmétique
Les opérateurs arithmétiques correspondent à des méthodes dunder : __add__ pour +, __sub__ pour -, etc.
class Vector:
def __init__(self, x, y): self.x, self.y = x, y
def __add__(self, o): return Vector(self.x+o.x, self.y+o.y)
def __repr__(self): return f"Vector({self.x},{self.y})"
print(Vector(1,2) + Vector(3,4)) # Vector(4,6)__getitem__ pour l’indexation
__getitem__ permet à votre classe de prendre en charge l’indexation entre crochets, comme obj[key].
class Matrix:
def __init__(self, data):
self.data = data
def __getitem__(self, idx):
return self.data[idx]
m = Matrix([[1,2],[3,4]])
print(m[0]) # [1, 2]
print(m[1][0]) # 3Vérification rapide
Quelle méthode dunder est appelée lorsque vous utilisez print(obj) ?
Récapitulatif
Les méthodes magiques donnent à vos classes un comportement idiomatique en Python. __repr__ s’adresse aux développeurs et __str__ aux utilisateurs. Définissez __eq__, __hash__ et les méthodes dunder arithmétiques pour rendre vos objets pleinement fonctionnels.
Apprends Python avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 76
- Leçons
- 320
Questions Fréquemment Posées
La leçon « Méthodes magiques : __str__ et __repr__ » est-elle gratuite ?
Oui — le texte complet de « Méthodes magiques : __str__ et __repr__ » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Méthodes magiques : __str__ et __repr__ » ?
Implémentez des méthodes spéciales pour obtenir une représentation lisible des objets. Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Méthodes magiques : __str__ et __repr__ » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Classes et méthode __init__
- Attributs d’instance et de classe
- Méthodes d’instance et self
- Méthodes magiques : __str__ et __repr__