Heim >Backend-Entwicklung >Python-Tutorial >Wie überschreibe ich „__str__' und „__repr__' für die benutzerdefinierte Druckausgabe von Klasseninstanzen?

Wie überschreibe ich „__str__' und „__repr__' für die benutzerdefinierte Druckausgabe von Klasseninstanzen?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 04:45:38503Durchsuche

How to Override `__str__` and `__repr__` for Customized Print Output of Class Instances?

So passen Sie die Zeichenfolgendarstellung von Klasseninstanzen mit print() an

Beim Drucken von Instanzen einer Klasse zeigt das Standardverhalten häufig an Speicherort des Objekts. Um die Zeichenfolgendarstellung anzupassen und zu steuern, was beim Drucken angezeigt wird, können Sie zwei spezielle Methoden implementieren: str und __repr__.

__str__: Definieren der für Menschen lesbaren Zeichenfolgendarstellung

Die Methode str definiert die Zeichenfolgendarstellung eines Objekts für den allgemeinen Gebrauch. Es wird aufgerufen, wenn Sie print() oder str() für das Objekt aufrufen. Durch Überschreiben von __str__ können Sie die benutzerdefinierte Ausgabe definieren, die beim Drucken angezeigt wird.

__repr__: Definieren der Zeichenfolgendarstellung für das Debuggen

Der repr Die Methode definiert die Zeichenfolgendarstellung, die für Debugging-Zwecke vorgesehen ist. Es wird aufgerufen, wenn Sie repr() für das Objekt aufrufen oder wenn Sie str__ nicht definieren. Die __repr-Darstellung sollte ein gültiger Python-Ausdruck sein, der das Objekt ergibt.

Beispiel

So passen Sie die Zeichenfolgendarstellung Ihrer Klasseninstanzen an:

class Test:
    def __init__(self):
        self.a = 'foo'

    def __str__(self):
        return "member of Test"

    def __repr__(self):
        return "Test()"

Im Beispiel oben:

  • Die Die Methode str gibt eine für Menschen lesbare Zeichenfolge „member of Test“ zurück, wenn Sie das Objekt drucken.
  • Die Methode repr gibt einen gültigen Python-Ausdruck „Test“ zurück ()“, das würde das Objekt neu erstellen.

Wenn Sie eine Instanz davon drucken Klasse:

t = Test()
print(t)

Es wird „Mitglied von Test“ auf der Konsole angezeigt und bietet eine benutzerdefinierte und aussagekräftige Darstellung.

Das obige ist der detaillierte Inhalt vonWie überschreibe ich „__str__' und „__repr__' für die benutzerdefinierte Druckausgabe von Klasseninstanzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn