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
Freigeben: 2023-04-29 19:58:05
nach vorne
1587 Leute haben es durchsucht

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())
''
Nach dem Login kopieren

**__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
Nach dem Login kopieren

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)'
>>>
Nach dem Login kopieren

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))
Nach dem Login kopieren
verwendet wird. Ausgabeergebnis:

Name:Alice
Name:Alice
姓名:Alice
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage