aidez-moi à comprendre ce que Le lien vers le code complet: http: // GreenteAppress.com/thinkpyThon2/code/goodkangaroo.py P> Je ne peux pas envelopper ma tête autour de cette ligne p> objet code> dans cette ligne: s = '' + objet .__ str __ (obj) code>. Je n'ai pas vu code> objet code> mentionné n'importe où dans le code, est-ce un mot-clé spécial? Qu'est-ce que cela signifie dans ce contexte?
3 Réponses :
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'>
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/...
Cette ligne de code est un moyen de convertir normalement, on utiliserait < Code> Str (obj) code>, mais dans ce cas, si utilisant obj code> dans une chaîne, en appelant la méthode par défaut __ str __ code> de type de base objet code> strong>, 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 obj code> est un autre kangourou code>, alors le même __ str __ () code> méthode défini dans kangourou code> serait appelé de manière récursive, provoquant ainsi quelque chose comme celui-ci à être généré: p> objet .__ STR __ () Code> Au lieu de cela, évite d'appeler la méthode récursivement et donne: p>
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.
Dans ce cas, le code appelle pour les chaînes, ce sera Remarque: objet code> a > est la classe de base de Python. p>
Objet .__ STR __ (auto) Code> qui utilisera objet code> SHODE de tournage obj code> dans une chaîne. Cela appellera objet .__ REC __ (auto) code> qui imprimera la représentation "officielle" de l'objet. P>
'[String Contents]' code> (avec [String Contents] Code> remplacé par le contenu réel de la chaîne) et pour des objets génériques ce sera <[nom d'objet] à [adresse]> code> (à nouveau avec [nom d'objet] code> et [adresse] code> remplacé par le nom et l'adresse de l'objet. ). p>
objet .__ str __ (obj) code> et str (obj) code> retournera des résultats différents depuis objet .__ str __ (obj) code> Appelez REC (obj) code>. p>
Cela est bête. La bonne façon de le faire serait
s = '' + str (obj) code>.@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 code> définit son propre__ str __ code> et vous devez l'éviter en appelant spécifiquement la base à partir deobjet code>@ Ry- Vous avez raison, je cherchais une motivation.