À quoi sert __repr__ ? - Docstring

À quoi sert __repr__ ?

La méthode spéciale __repr__ permet d'indiquer une chaîne de caractères qui sert de représentation à une classe.

Cette chaîne de caractères est retournée lors de l'utilisation de la fonction repr sur une instance de la classe.

import datetime
now = datetime.datetime.now()
print(repr(now))

La chaîne de caractères retournée est destinée aux développeurs et sa représentation permet généralement de recréer l'objet en question.

Par exemple, le code ci-dessus nous retourne la chaîne de caractères "datetime.datetime(2021, 1, 13, 10, 24, 45, 116735)" que nous pouvons utiliser pour recréer l'objet now :

import datetime
now = datetime.datetime(2021, 1, 13, 10, 24, 45, 116735)
print(now)

Pour implémenter cette méthode, il suffit de la surcharger à l'intérieur d'une classe :

class Utilisateur:
    def __init__(self, prenom, nom):
        self.prenom = prenom
        self.nom = nom

    def __repr__(self):
        return "Utilisateur(prenom='{}', nom='{}')".format(self.prenom, self.nom)

utilisateur_01 = Utilisateur(prenom="Patrick", nom="Smith")
print(repr(utilisateur_01))

Là encore, nous pouvons prendre le résultat retourné par repr (Utilisateur(prenom='Patrick', nom='Smith')) pour recréer l'objet correspondant.

Si vous n'implémentez pas cette méthode dans votre classe, la méthode __repr__ de l'objet object (dont toutes les classes héritent par défaut) sera utilisée.

Par défaut, la classe (__main__.Utilisateur) et l'adresse en mémoire de l'instance (0x10f5952e0) sont affichées :

# On n'implémente pas la méthode __repr__
class Utilisateur:
    def __init__(self, prenom, nom):
        self.prenom = prenom
        self.nom = nom

utilisateur_01 = Utilisateur(prenom="Patrick", nom="Smith")

# Quand on utilise repr sur notre instance, la classe et l'adresse en mémoire de l'instance sont affichées
print(repr(utilisateur_01))             # <__main__.Utilisateur object at 0x10f5952e0>

# Cette implémentation provient de la classe object
print(object.__repr__(utilisateur_01))  # <__main__.Utilisateur object at 0x10f5952e0>

(si vous exécutez le code ci-dessus, l'adresse en mémoire n'est pas affichée car le code est exécuté dans votre navigateur internet)

Réservé aux membres abonnés

Inscris-toi

Pour pouvoir prendre des notes et ajouter des favoris tu dois être abonné à Docstring.

Voir les formules

Mes notes

Sauvegardé

Passages surlignés

Besoin d'aide ?

Essaie d'être le plus exhaustif possible en donnant suffisamment de détails pour qu'on puisse te répondre du premier coup 😉

Tu peux également visionner cette vidéo dans laquelle je t'explique comment poser ta question correctement et utiliser l'éditeur.

Tu souhaites nous remonter un bug ? Utilise-plutôt ce formulaire.

Cette fonctionnalité est réservée aux membres de la formule accompagnement de Docstring.

Aucun résultat.

Un problème sur le site ?

Aide-nous à améliorer Docstring en nous signalant un problème que tu as rencontré.

Que ce soit un bug sur une fonctionnalité ou une erreur dans une formation, on va pouvoir le corriger rapidement 😉

Page concernée

M'avertir par e-mail

Je veux être averti par e-mail lorsque ce bug est corrigé.