Python Academy · Leçon

Méthodes magiques : __str__ et __repr__

Implémentez des méthodes spéciales pour obtenir une représentation lisible des objets.

Leçon 4 sur 413 étapes

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))  # True

Associer __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])  # 3

Vé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.

Gratuit pour commencer

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

  1. Classes et méthode __init__
  2. Attributs d’instance et de classe
  3. Méthodes d’instance et self
  4. Méthodes magiques : __str__ et __repr__
← Retour à Python Academy