Heim >Backend-Entwicklung >Python-Tutorial >Ein umfassendes Verständnis von __str__ und __repr__ in Python in einem Artikel
Wir alle wissen, dass Pythons integrierte Funktion repr() Objekte in Form von Strings ausdrücken kann, um uns die Identifizierung zu erleichtern. Dies ist die „String-Darstellung“. repr() erhält die String-Darstellung eines Objekts über die spezielle Methode __repr__. 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())) <__main__.Example object at 0x10a514f98> >>> print(repr(Example())) <__main__.Example object at 0x1088eb438> >>> >>> str(Example) "<class '__main__.Example'>" >>> repr(Example()) '<__main__.Example object at 0x1088eb438>'
Als nächstes werfen wir einen Blick auf die Ähnlichkeiten und Unterschiede zwischen **__str__** und **__repr__**. Gemäß der offiziellen Definition der Python-Dokumentation:
Du bist schon verwirrt, was formelle und informelle Formate angeht, 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 ein String-Typ ist, ist das Ergebnis von repr(y) eine „formelle“ String-Darstellung, während das Ergebnis von str(y) „informell“ 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))-lesbar, es wird nicht erwartet, dass __str__() einen gültigen Python-Ausdruck zurückgibt, es könnte jedoch eine bequemere oder genauere Beschreibung verwendet werden. Das Ziel von __repr__ ist klar. Die zurückgegebene Zeichenfolge sollte genau und eindeutig sein und so viel wie möglich ausdrücken, wie das gedruckte Objekt mithilfe von Code erstellt wird. Die Verwendung der __str__-Methode des Containers enthält den __repr__ des Objekts
Das obige ist der detaillierte Inhalt vonEin umfassendes Verständnis von __str__ und __repr__ in Python in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!