Heim >Backend-Entwicklung >Python-Tutorial >Was sind die Gemeinsamkeiten und Unterschiede zwischen __str__ und __repr__ in Python?
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()) ''
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:
>>> 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.
>>> 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.
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!