2016-03-25 1 views
2

En python, existe-t-il une section d'un PEP contre la méthode __str__ renvoyant une chaîne multiligne?PEP et multiline `__str__` return

Pro: PyCharm ne me quereller et Google tire un blanc

Contra: je pouvais le voir causerait une réponse inélégante si quelqu'un concaténé il, se sent non pythonique et je ne suis pas sûr Je me souviens avoir vu un -bar dans mon propre code

Je ne sais pas si d'avoir juste un __str__ retour multiligne (keep it simple) ou à laisser seul __str__ (c.-à- retours <class foo>) et un module spécial (par exemple.foo.report()).

+0

Possible duplication de [Différence entre \ _ \ _ str \ _ et \ _ \ _ repr \ _ \ _ en Python] (http://stackoverflow.com/questions/1436703/difference-between-str-and- repr-in-python) –

+1

Je ne pense pas que ce soit une dupe '__str__' vs' __repr__', mais si c'est quelque chose, c'est plutôt une question basée sur l'opinion. Mais je suppose que vous pourriez également dire qu'il a déjà une réponse – Bahrom

Répondre

5

Il n'y a rien de mal à cela. Il existe de nombreuses classes qui renvoient des valeurs multilignes pour str (telles que pandas DataFrames et Series). Vous pouvez renvoyer n'importe quel format qui représente le mieux l'objet.

+0

Que Pandas utilise des retours multilignes est toute la preuve en faveur que je cherchais. Merci –

2

La méthode __str__ est conçue pour renvoyer une valeur de chaîne qui est lisible par un humain. S'il y a une utilité à avoir plusieurs lignes pour cela (comme la représentation sous forme de chaîne d'un jeu de table qui a deux dimensions), vous devriez le faire. Si elle est destinée à être consommée par une autre source, vous pouvez utiliser une méthode personnalisée qui inclut les informations appropriées dans le format approprié ou remplacer __repr__, qui est destinée à renvoyer une représentation de chaîne non ambiguë.