Le but de Python __repr__
def __repr__(self):
return '<%s %s (%s:%s) %s>' % (
self.__class__.__name__, self.urlconf_name, self.app_name,
self.namespace, self.regex.pattern)
Quelle est la signification et le but de cette méthode?
- voulez-vous savoir pourquoi
>>> variable
impression que__repr__()
retourne? - Que la documentation met les gens à dormir. De Plus, il est utile d'apprendre des autres, comment il est utilisé.
- Double Possible de la Différence entre l' __str__ et __ _ _ repr__ en Python
- Pour les développeurs Java qui sont l'apprentissage de Python, la meilleure façon de voir cela est que toString() en Java.
Vous devez vous connecter pour publier un commentaire.
__repr__
devrait revenir à la version imprimable de la représentation de l'objet, le plus probable un des moyens possibles pour créer cet objet. Voir la documentation officielle ici.__repr__
est plus pour les développeurs, tandis que__str__
est pour les utilisateurs finaux.Un exemple simple:
__str__
est la sortie qui est censé être lisible par l'homme:__repr__
est censé être une représentation lisible pour l'interpréteur Python (c'est à dire l'alimentation de la chaîne de l'interprète doit recréer l'objet). Si un objet n'a pas de__str__
méthode, cependant,__repr__
est utilisé à la place. Aussi comme le note: cet exemple réellement imprime le__str__
méthode deself.x
etself.y
:%r
doit être utilisé au lieu de%s
dans la chaîne de formatage (depuis la classe ne définit pas__str__
,__repr__
est en fait retourné de toute façon, mais c'est une anomalie).Cela s'explique assez bien à le La documentation Python:
Donc ce que vous voyez ici est la valeur par défaut de mise en œuvre de __repr__, ce qui est utile pour la sérialisation et de débogage.
stackoverflow
mais repr('stackoverflow') est'stackoverflow'
.__repr__
est utilisé par l'application autonome de l'interpréteur Python pour afficher une classe dans un format imprimable. Exemple:Dans les cas où un
__str__
méthode n'est pas définie dans la classe, il va appeler le__repr__
fonction dans une tentative de créer une version imprimable de la représentation.En outre,
print()
ing la classe fait appel__str__
par défaut.La Documentation, si vous s'il vous plaît
La __repr__ méthode dit simplement Python comment imprimer des objets d'une classe
Un exemple pour voir les différences entre eux (j'ai copié à partir cette source),
Les retours de
repr()
etstr()
sont identiques pourint x
, mais il y a une différence entre les valeurs de retour pourstr
y
-- on est formelle et l'autre est informel. L'une des différences les plus importantes entre les secteurs formel et informel des représentations, c'est que le défaut de mise en œuvre de__repr__
pour un str valeur peut être appelé comme un argument à la fonction eval, et la valeur de retour serait une chaîne valide de l'objet, comme ceci:Si vous essayez d'appeler la valeur de retour de
__str__
comme argument à la fonction eval, le résultat ne sera pas valide.Lorsque nous créons de nouveaux types par la définition des classes, nous pouvons profiter de certaines fonctionnalités de Python pour faire de la nouvelles classes pratique à utiliser. L'une de ces fonctions est "méthodes spéciales", également dénommé "méthodes magiques".
Méthodes spéciales ont des noms qui commencent et se terminent par deux caractères de soulignement. Nous définissent, mais n'ont pas l'habitude de les appeler directement par leur nom. Au lieu de cela, ils exécutent automatiquement dans des circonstances spécifiques.
C'est pratique pour être en mesure à la sortie de la valeur d'une instance d'un objet en utilisant une instruction print. Lorsque nous faisons cela, nous aimerions la valeur pour être représenté à la sortie, dans certains compréhensible non ambiguë. Le repr méthode spéciale peut être utilisé pour organiser pour que cela se produise. Si l'on définit cette méthode, il peut être appelé automatiquement lors de l'impression de la valeur d'une instance d'une classe pour laquelle nous avons défini cette méthode. Il convient de mentionner, cependant, qu'il ya aussi un str méthode spéciale, utilisée pour un semblable, mais pas identique, que peut obtenir la priorité, si nous avons également défini.
Si nous n'avons pas défini, la repr méthode de la classe Point3D, et avoir instancié my_point comme une instance de Point3D, et puis nous faisons cela ...
impression my_point
... nous pouvons voir ce que la sortie ...
Pas très beau, hein?
Ainsi, nous définissons la repr ou str méthode spéciale, ou les deux, afin d'obtenir un meilleur rendement.
De sortie ...
(1, 2, 3)
(1, 2, 3)
Mettre en œuvre repr pour chaque classe que vous mettre en œuvre. Il devrait y avoir aucune excuse.
Mettre en œuvre str pour les classes que vous pensez que la lisibilité est plus important de non-ambiguïté.
Consulter ce lien: https://www.pythoncentral.io/what-is-the-difference-between-str-and-repr-in-python/