[PYTHON] Programmation pour les humains avec un __repr__ bien défini

# default __repr__
>>> random.choice(Unit.get_all())
<module.Unit object at 0x10cff0550>

#Après avoir changé la définition__repr__
>>> random.choice(Unit.get_all())
Sirène dragon[ID:2001]

La valeur de «repr» est également affichée dans le journal des erreurs, ce qui est pratique pour le débogage. 'self' <Player: id: 123456 nom: [Fishman] Orca Spycy Lv: 99>

Vérifier la mise en œuvre de repr

python


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals


class BaseRepr(object):
    id = 12345
    name = 'Hinata Crab Zou'


class DefaultRepr(BaseRepr):
    pass


class DefaultReprOverWrite(BaseRepr):
    def __repr__(self):
        return '<{0}.{1} object at {2}>'.format(
            self.__module__, type(self).__name__, hex(id(self)))


class CustomRepr(BaseRepr):
    def __repr__(self):
        return '{}[ID:{}]'.format(self.name, self.id)


print DefaultRepr(), DefaultRepr.__name__
print DefaultReprOverWrite(), DefaultReprOverWrite.__name__
print CustomRepr(),  CustomRepr.__name__

Résultat d'exécution


>>>python test.py 
<__main__.DefaultRepr object at 0x1086018d0> DefaultRepr
<__main__.DefaultReprOverWrite object at 0x1086018d0> DefaultReprOverWrite
Hinata Crab Zou[ID:12345] CustomRepr

Vérifiez également le comportement de __str__ et __unicode__

python


class CustomRepr(BaseRepr):
    def __repr__(self):
        return '{}[ID:{}]'.format(self.name, self.id)

    def __str__(self):
        return '__str__'

    def __unicode__(self):
        return '__unicode__'

print 'str:', str(CustomRepr())
print 'unicode:', unicode(CustomRepr())

Résultat d'exécution


>>>python test.py 
str: __str__
unicode: __unicode__

Si vous ne définissez pas «str» et «unicode»

python


class CustomRepr(BaseRepr):
    def __repr__(self):
        return '{}[ID:{}]'.format(self.name, self.id)

print 'str:', str(CustomRepr())
print 'unicode:', unicode(CustomRepr())

Résultat d'exécution


>>>python test.py 
str:Hinata Crab Zou[ID:12345]
unicode:Hinata Crab Zou[ID:12345]

référence

Manuel de référence Python Python str versus unicode Difference between str and repr in Python Hyuga Kanzo

Recommended Posts

Programmation pour les humains avec un __repr__ bien défini
Essayez de programmer avec un shell!
Programmation média avec Raspeye (préparation audio)
Préparer un environnement de langage de programmation pour l'analyse des données
Obtenez un billet pour un parc à thème avec python
Créer un LINE BOT avec Minette pour Python
Procédure de création d'un LineBot réalisé avec Python
Créez un tableau de bord pour les appareils réseau avec Django!
Commandes pour créer un environnement python3 avec virtualenv
J'ai créé une fenêtre pour la sortie du journal avec Tkinter
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
Créer une couche pour AWS Lambda Python dans Docker
J'ai essayé un RPA simple pour me connecter avec du sélénium
Construction d'environnement Python pour les débutants en programmation (Mac OS)
Conseils pour ouvrir une scène avec une référence brisée dans un script
Construire un environnement Django pour Win10 (avec espace virtuel)
Programmez avec votre smartphone n'importe où! (Recommandé pour le langage C / Python)
Programmation asynchrone avec libev # 2
3. 3. Programmation IA avec Python
Format A4 avec python-pptx
Programmation Python avec Atom
Programmation compétitive avec python
Programmation Shader avec pyOpenGL
Programmation asynchrone avec libev
Programmation linéaire avec PuLP
Décorer avec un décorateur
Programmation avec Python Flask
Programmation asynchrone avec libev # 3
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
Recommandation de django, wagtail ~ Pourquoi développer un site web avec python ~
Créer un compte enfant de connect with Stripe en Python
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Procédure d'installation pour Python et Ansible avec une version spécifique
J'ai créé un moniteur de ressources pour Raspberry Pi avec une feuille de calcul
Un exemple pour dessiner des points avec PIL (Python Imaging Library).
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
(Pour les débutants) Essayez de créer une API Web simple avec Django
[Pour les débutants] Un résumé en mots des langages de programmation populaires (version 2018)
Bibliothèque pour spécifier un serveur de noms en python et dig
Tourner un tableau de chaînes avec une instruction for (Python3)
Créez une API d'intégration sociale pour les applications smartphone avec Django
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django