Heim >Backend-Entwicklung >Python-Tutorial >Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__ in Python?

Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__ in Python?

WBOY
WBOYnach vorne
2023-04-29 19:58:051579Durchsuche

Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__?

Darstellung von Zeichenfolgen

Wir alle wissen, dass die in Python integrierte Funktion repr() Objekte in Form von Zeichenfolgen ausdrücken kann, um uns die Identifizierung zu erleichtern. Dies ist die „String-Darstellung“. repr() verwendet die spezielle Methode __repr__, um die String-Darstellung eines Objekts abzurufen. Wenn __repr__ nicht implementiert ist und wir eine Instanz eines Vektors auf der Konsole ausgeben, lautet die resultierende Zeichenfolge möglicherweise .

>>> class Example: pass

>>> print(str(Example()))>>> print(repr(Example()))>>> 
>>> str(Example)
""
>>> repr(Example())
''

**__str__** vs. **__repr__**

Als nächstes werfen wir einen Blick auf die Gemeinsamkeiten und Unterschiede zwischen **__str__** und **__repr__**. Laut der offiziellen Python-Dokumentation:

  • __str__: Wird von str(object) und den integrierten Funktionen format() und print() aufgerufen, um eine „informelle“ oder wohlgeformte Zeichenfolgendarstellung eines Objekts zu generieren. Der Rückgabewert muss ein String-Objekt sein.

  • __repr__: wird von der integrierten Funktion repr() aufgerufen, um die „offizielle“ Zeichenfolgendarstellung eines Objekts auszugeben. Der Rückgabewert muss ein String-Objekt sein. Diese Methode wird normalerweise zum Debuggen verwendet. Die für das integrierte Typobjekt definierte Standardimplementierung ruft object.__repr__() auf.

Du bist verwirrt über formelle und informelle Formate, oder? Es ist in Ordnung, schauen wir uns weiter an:

1. Beide können Objekte ausgeben

>>> x = 4
>>> repr(x)
'4'
>>> str(x)
'4'
>>> y = 'pythonic'
>>> repr(y)
"'pythonic'"
>>> str(y)
'pythonic'

>>> z = '4'
>>> repr(z)
"'4'"
>>> str(z)# 注意,此处的输出结果形式跟str(x)一样,但x和z的类型并不一样
'4'
>>> str(x) == str(z)
True
>>> repr(x) == repr(z)
False
>>> str(4) == str("4")
True
>>> repr(4) == repr("4")
False

Wenn x=4, wenn x ein ganzzahliger Typ ist, sind die Rückgabeergebnisse des Aufrufs von str() und repr() gleich,

Und wenn y vom Typ string ist, ist das Ergebnis von repr(y) die „formelle“ String-Darstellung, während das Ergebnis von str(y) die „informelle“ Darstellung ist. str() ermöglicht es uns, den Inhalt des Objekts am schnellsten zu verstehen und ist besser lesbar.

2.__str__ ist lesbar und das Ziel von __repr__ ist klar

>>> import datetime
>>> d = datetime.datetime.now()
>>> str(d)
'2020-04-04 20:47:46.525245'
>>> repr(d)
'datetime.datetime(2020, 4, 4, 20, 47, 46, 525245)'
>>>

Es ist ersichtlich, dass repr() den Typ, den Wert und andere Informationen des Objekts besser anzeigen kann und die Objektbeschreibung klar ist.

Es wird aufgerufen, wenn die Funktion str() verwendet wird oder wenn ein Objekt mit der Druckfunktion gedruckt wird, und die zurückgegebene Zeichenfolge ist für Endbenutzer benutzerfreundlicher.

3. Schreiben Sie __repr__ neu, wodurch auch __str_

class Student():

def __init__(self, name):
self.name = name

def __str__(self):
return "Name:" + self.name

def __repr__(self):
return "姓名:" + self.name


class_one = Student("Alice")
print(class_one)
print(str(class_one))
print(repr(class_one))
verwendet wird. Ausgabeergebnis:

Name:Alice
Name:Alice
姓名:Alice

Das obige ist der detaillierte Inhalt vonWas sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__ in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen