Python >> Tutoriel Python >  >> Python

Fonction Python repr() - Un guide utile avec un exemple

repr(obj) intégré de Python La fonction renvoie la représentation sous forme de chaîne standard de l'objet fourni. Cela inclut souvent le type et l'adresse mémoire de l'objet, faute d'informations supplémentaires. Par exemple, la représentation sous forme de chaîne renvoyée peut être '<main.Car object at 0x000001F66D11DBE0>' pour un objet personnalisé de type Car . La fonction appelle en interne la méthode obj.__repr__() qui est défini par défaut pour tous les objets.

Voici un exemple :

>>> class Car:
	pass

>>> repr(Car())
'<__main__.Car object at 0x000001F66D11DBE0>'

Syntaxe repr()

Syntax: 
repr(object)      # --> Returns standard (canonical) representation of an object. 
Arguments object Objet pour lequel la représentation sous forme de chaîne doit être renvoyée.
Valeur de retour string Représentation sous forme de chaîne de l'objet.

Représentation vidéo()

Exemples d'utilisation repr()

Le code suivant vous montre comment utiliser le repr(x) fonction sur la façon de déterminer la représentation sous forme de chaîne de certains objets Python de base :

>>> repr(42)
'42'
>>> repr('42')
"'42'"
>>> repr([1, 2, 3])
'[1, 2, 3]'
>>> repr({'Alice': 'Bob', 'Bob': 'Alice'})
"{'Alice': 'Bob', 'Bob': 'Alice'}"
>>> repr(object)
"<class 'object'>"
>>> repr(repr)
'<built-in function repr>'

Voici comment définir la représentation sous forme de chaîne de vos propres objets personnalisés :

class Car:
    def __repr__(self):
        return 'black tesla'


print(repr(Car()))
# black tesla

Mais avant de continuer, je suis ravi de vous présenter mon nouveau livre Python Python One-Liners (Lien Amazon).

Si vous aimez les one-liners, vous allez adorer le livre. Il vous apprendra tout ce qu'il y a à savoir sur une seule ligne de code Python. Mais c'est aussi une introduction à l'informatique , science des données, apprentissage automatique et algorithmes. L'univers en une seule ligne de Python !

Le livre est sorti en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Lien :https://nostarch.com/pythononeliners

Comment implémenter votre propre représentation sous forme de chaîne pour un objet personnalisé

Pour implémenter votre propre représentation sous forme de chaîne lors de l'utilisation du repr(object) fonction sur votre object personnalisé , écrasez le object.__repr__() méthode lors de la définition de la classe et renvoie la représentation sous forme de chaîne souhaitée de l'objet donné. Notez que s'il y a un __str__() méthode définie, elle prime sur le __repr__() méthode qui n'est utilisée que comme solution de secours implémentée par défaut pour n'importe quel objet.

class Car:
    def __init__(self, color, brand):
        self.color = color
        self.brand = brand

    def __str__(self):
        return 'Your car has color ' + self.color + ' and brand ' + self.brand

    def __repr__(self):
        return '123'

    
porsche = Car('black', 'porsche')
tesla = Car('silver', 'tesla')

print(str(porsche))
print(str(tesla))

La sortie est :

Your car has color black and brand porsche
Your car has color silver and brand tesla

Notez comment le __str__ la méthode a priorité sur le __repr__ méthode. Mais si vous ignorez la définition du __str__ méthode, il prendra la chaîne renvoyée par le __repr__ méthode :

class Car:
    def __init__(self, color, brand):
        self.color = color
        self.brand = brand

    def __repr__(self):
        return '123'

    
porsche = Car('black', 'porsche')
tesla = Car('silver', 'tesla')

print(str(porsche))
print(str(tesla))

La sortie est maintenant :

123
123

Résumé

repr(obj) intégré de Python La fonction renvoie la représentation sous forme de chaîne standard de l'objet fourni.

Cela inclut souvent le type et l'adresse mémoire, faute d'informations supplémentaires sur l'objet.

Par exemple, le résultat peut être '<main.Car object at 0x000001F66D11DBE0>' pour un objet personnalisé de type Car .

>>> class Car:
	pass

>>> repr(Car())
'<__main__.Car object at 0x000001F66D11DBE0>'

La fonction appelle en interne la méthode obj.__repr__() qui est défini par défaut pour tous les objets.


Post précédent
Prochain article