[PYTHON] Programmierung für Menschen mit einem genau definierten __repr__

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

#Nach dem Ändern der Definition__repr__
>>> random.choice(Unit.get_all())
Drachen Meerjungfrau[ID:2001]

Der Wert von "repr" wird auch im Fehlerprotokoll angezeigt, was für das Debuggen praktisch ist. 'self' <Spieler: id: 123456 name: [Fishman] Orca Spycy Lv: 99>

Überprüfen Sie die Implementierung von 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__

Ausführungsergebnis


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

Überprüfen Sie auch das Verhalten von __str__ und __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())

Ausführungsergebnis


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

Wenn Sie nicht __str__ und __unicode__ definieren

python


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

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

Ausführungsergebnis


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

Referenz

Python-Referenzhandbuch Python str versus unicode Difference between str and repr in Python Hyuga Kanzo

Recommended Posts

Programmierung für Menschen mit einem genau definierten __repr__
Versuchen Sie, mit einer Shell zu programmieren!
Medienprogrammierung mit Raspeye (Vorbereitung für Audio)
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Holen Sie sich ein Ticket für einen Themenpark mit Python
Erstellen Sie mit Minette für Python einen LINE BOT
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv
Ich habe mit Tkinter ein Fenster für die Protokollausgabe erstellt
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Ich habe einen einfachen RPA für die Anmeldung mit Selen ausprobiert
Python-Umgebungskonstruktion für Programmieranfänger (Mac OS)
Tipps zum Öffnen einer Szene mit einer fehlerhaften Referenz in einem Skript
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Programmieren Sie überall mit Ihrem Smartphone! (Empfohlen für C-Sprache / Python)
Asynchrone Programmierung mit libev # 2
3. 3. KI-Programmierung mit Python
A4 Größe mit Python-Pptx
Python-Programmierung mit Atom
Wettbewerbsfähige Programmierung mit Python
Shader-Programmierung mit pyOpenGL
Asynchrone Programmierung mit libev
Lineare Programmierung mit PuLP
Mit Dekorateur dekorieren
Programmieren mit Python Flask
Asynchrone Programmierung mit libev # 3
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Empfehlung von Django, Bachstelze ~ Warum eine Website mit Python entwickeln ~
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
Experimentieren Sie mit Python, um ein PDF für Selbstversorger für Kindle zu erstellen
Installationsverfahren für Python und Ansible mit einer bestimmten Version
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ein Beispiel zum Zeichnen von Punkten mit PIL (Python Imaging Library).
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
[Für Anfänger] Eine Wortzusammenfassung der gängigen Programmiersprachen (Version 2018)
Bibliothek zur Angabe eines Nameservers in Python und Dig
Drehen Sie ein Array von Zeichenfolgen mit einer for-Anweisung (Python3).
Erstellen Sie mit Django eine API für die soziale Integration von Smartphone-Apps
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500