Maison > développement back-end > Tutoriel Python > Python `str` vs `repr` : quelle est la différence dans la représentation des objets ?

Python `str` vs `repr` : quelle est la différence dans la représentation des objets ?

Mary-Kate Olsen
Libérer: 2024-12-29 01:13:10
original
1025 Les gens l'ont consulté

Python `str` vs. `repr`: What's the Difference in Object Representation?

str et __repr__ : découvrir la différence dans les représentations Python

La distinction entre str et repr en Python réside dans leur principe fondamental objectifs :

repr pour Unambiguous Identity

__repr__, comme son nom l'indique, vise à fournir une « représentation » sans ambiguïté d'un objet. Son objectif est de fournir suffisamment d’informations pour recréer exactement le même objet plus tard. L'implémentation par défaut renvoie le nom de la classe et les attributs, en les séparant par des délimiteurs de paramètres. Ce format garantit que le résultat peut être évalué avec eval(), permettant la reconstitution de l'objet.

str pour une lisibilité humaine

__str__, quant à lui, donne la priorité à la lisibilité humaine plutôt qu'à la précision. Il s'agit de générer une chaîne qui peut être facilement comprise par un humain. Il omet souvent des détails inutiles et peut formater le résultat pour qu'il soit plus attrayant visuellement.

Différences clés

  • repr s'efforce d'obtenir une représentation sans ambiguïté. , tandis que str vise lisibilité.
  • str est destiné à la sortie destinée à l'utilisateur, tandis que repr est plus adapté au débogage ou à l'introspection d'objet.
  • Implémentation par défaut de repr est généralement inutile mais peut être utilisé pour le débogage lorsque str n'est pas défini.
  • Les conteneurs (par exemple, listes, dictionnaires) utilisent le repr de leurs objets contenus pour __str__.

Bonnes pratiques

  • Toujours définir repr pour vos classes personnalisées afin de garantir une identification correcte des objets.
  • Implémentez uniquement str si vous souhaitez une représentation sous forme de chaîne lisible par l'homme qui peut différer de __repr__.
  • Utilisez %r (formatage repr()) dans repr pour garantir une absence d'ambiguïté évaluation.
  • Utilisez %s (formatage str()) dans str pour formater la chaîne pour plus de lisibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal