0
votes

Qu'est-ce que cette ligne de code liée à __str __ (auto) signifie?

aidez-moi à comprendre ce que objet dans cette ligne: s = '' + objet .__ str __ (obj) . Je n'ai pas vu objet mentionné n'importe où dans le code, est-ce un mot-clé spécial? Qu'est-ce que cela signifie dans ce contexte?

Le lien vers le code complet: http: // GreenteAppress.com/thinkpyThon2/code/goodkangaroo.py

Je ne peux pas envelopper ma tête autour de cette ligne xxx


5 commentaires

Cela est bête. La bonne façon de le faire serait s = '' + str (obj) .


@Marco. Idiot, probablement, mais cela servira un but


@ Juanpa.arrivillaga: Ce n'est pas une récursive infinie à moins qu'il y ait un arrangement physiquement improbable de kangourous. Mais cela évitera plus généralement la récursion :)


Non si obj définit son propre __ str __ et vous devez l'éviter en appelant spécifiquement la base à partir de objet


@ Ry- Vous avez raison, je cherchais une motivation.


3 Réponses :


1
votes

objet code> fait référence à la classe de base intégrée, qui est un objet. Typing objet code> dans le Python Replex fournit ceci ...

>>> object
<class 'object'>


2 commentaires

En suivant, j'ai essayé de trouver des documents Python spécifiant exactement cela. Quelqu'un d'autre a une chance?


Consultez ma réponse pour plus de détails, mais le comportement quand appelé de cette façon est donné dans la documentation: docs.python.org/3/reference/...



2
votes

Cette ligne de code est un moyen de convertir obj dans une chaîne, en appelant la méthode par défaut __ str __ de type de base objet , qui génère une chaîne contenant le nom de la classe et l'adresse de l'instance en mémoire, comme par exemple .

normalement, on utiliserait < Code> Str (obj) , mais dans ce cas, si obj est un autre kangourou , alors le même __ str __ () méthode défini dans kangourou serait appelé de manière récursive, provoquant ainsi quelque chose comme celui-ci à être généré: xxx

utilisant objet .__ STR __ () Au lieu de cela, évite d'appeler la méthode récursivement et donne: xxx


1 commentaires

Salut @main. Si cela répondit correctement à votre question, veuillez l'accepter en cliquant sur la tickette verte en haut à gauche, de sorte que votre question puisse être marquée comme résolue.



0
votes

objet est la classe de base de Python.

Dans ce cas, le code appelle Objet .__ STR __ (auto) qui utilisera objet SHODE de tournage obj dans une chaîne. Cela appellera objet .__ REC __ (auto) qui imprimera la représentation "officielle" de l'objet.

pour les chaînes, ce sera '[String Contents]' (avec [String Contents] remplacé par le contenu réel de la chaîne) et pour des objets génériques ce sera <[nom d'objet] à [adresse]> (à nouveau avec [nom d'objet] et [adresse] remplacé par le nom et l'adresse de l'objet. ).

Remarque: objet .__ str __ (obj) et str (obj) retournera des résultats différents depuis objet .__ str __ (obj) Appelez REC (obj) .


0 commentaires