Quel est le but de `__repr__` en Python et en quoi diffère-t-il de `__str__` ?

Susan Sarandon
Libérer: 2024-11-03 18:41:29
original
462 Les gens l'ont consulté

What is the purpose of `__repr__` in Python and how does it differ from `__str__`?

Dévoilement du représentant : exploration de l'énigme de la repr

Le vaste écosystème de prouesses orientées objet de Python est orné par une famille aux multiples facettes de méthodes de dunder, chacune méticuleusement conçue pour répondre à des besoins spécifiques. Parmi ce panthéon réside l'énigmatique __repr__, une entité mystique entourée de mystère et cruciale pour le domaine de la représentation des objets.

Considérez-vous comme un enquêteur intrépide chargé de résoudre l'énigme de __repr__. Votre quête commence par un examen de son anatomie, comme en témoigne l'extrait de code complexe présenté :

<code class="python">def __repr__(self):
  return '<%s %s (%s:%s) %s>' % (
    self.__class__.__name__, self.urlconf_name, self.app_name,
    self.namespace, self.regex.pattern)</code>
Copier après la connexion

La syntaxe énigmatique de repr cache un objectif profond. Il donne aux objets la capacité d’articuler une représentation perceptible de leur moi intérieur, une représentation qui distille leur essence dans un format lisible. Cette représentation transcende les simples limites de l'attrait visuel ; il sert de modèle pour recréer l'objet, lui permettant de ressusciter de son incarnation symbolique.

La signification de la repr s'étend au-delà de son rôle de réanimateur. C'est le canal choisi pour présenter des objets dans des coques interactives, des terrains de jeux interactifs que les programmeurs peuvent bricoler et explorer. En remplaçant __repr__, vous exercez le pouvoir de personnaliser la façon dont vos objets sont représentés, les transformant d'entités énigmatiques en compagnons compréhensibles.

Cependant, les responsabilités de repr s'arrêtent là où le règne de str__ commence. Alors que __repr donne la priorité aux représentations conviviales pour les développeurs, str assume la responsabilité de répondre aux besoins des utilisateurs finaux. Il cherche à créer une représentation qui résonne avec la sensibilité humaine, une interprétation qui dresse un tableau clair et concis.

Pour illustrer la distinction nuancée, considérons l'extrait de code suivant :

<code class="python">class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __repr__(self):
        cls = self.__class__.__name__
        return f'{cls}(x={self.x!r}, y={self.y!r})'</code>
Copier après la connexion

Invoking repr produit un résultat adapté aux développeurs :

>>> p = Point(1, 2)
>>> print(repr(p))
Point(x=1, y=2)  # Developer-centric representation
Copier après la connexion

En revanche, str produit un rendu plus convivial :

>>> print(str(p))
(1, 2)  # User-friendly representation
Copier après la connexion

Ainsi, repr apparaît comme un outil indispensable pour élaborer des représentations d'objets sur mesure, un instrument de débogage et d'introspection. Il dévoile le fonctionnement interne des objets, démystifie leurs complexités et facilite leur résurrection. Son compagnon, __str__, assume le rôle de traducteur, restituant les objets sous une forme conforme à la compréhension humaine. Ensemble, ces méthodes plus stupides orchestrent la tapisserie dynamique de la représentation des objets de Python, permettant aux développeurs d'interagir avec les objets de manière à la fois informative et conviviale.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!