Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen __str__ und __repr__?

Was ist der Unterschied zwischen __str__ und __repr__?

anonymity
anonymityOriginal
2019-05-24 15:41:575356Durchsuche

Der Unterschied zwischen __str__ und repr__ ist: __str__ gibt eine benutzerfreundliche Anzeige zurück, während __repr__ die Methode rekonstruieren und dann __repr__ unten anzeigen muss. __str__ überschreibt __repr__ für eine benutzerfreundlichere Anzeige.

Was ist der Unterschied zwischen __str__ und __repr__?

Der Unterschied zwischen __repr__ und __str__ (Erklärung)

__repr__ und __str__ Die Methoden dienen alle der Anzeige, __str__ ist für Benutzer und __repr__ ist für Programmierer.

Druckvorgänge probieren zunächst die integrierten Funktionen __str__ und str aus (das interne Äquivalent des Druckvorgangs), die normalerweise eine benutzerfreundliche Anzeige zurückgeben sollten.

__repr__ wird in allen anderen Umgebungen verwendet: Wird für schnelle Antworten im interaktiven Modus und in der repr-Funktion verwendet. Wenn __str__ nicht verwendet wird, werden print und str verwendet. Normalerweise sollte eine codierte Zeichenfolge zurückgegeben werden, mit der das Objekt neu erstellt oder dem Entwickler Details angezeigt werden können.

Wenn wir in allen Umgebungen einheitlich anzeigen möchten, können wir die __repr__-Methode umgestalten. Wenn wir beispielsweise unterschiedliche Anzeigen in verschiedenen Umgebungen unterstützen möchten, verwenden Endbenutzer __str__ für die Anzeige und Programmierer entwickeln während Der zugrunde liegende __repr__ wird für die Anzeige verwendet. Tatsächlich überschreibt __str__ nur __repr__, um eine benutzerfreundlichere Anzeige zu erhalten.

class Test(object):
    def __init__(self, value='hello, world!'):
        self.data = value
>>> t = Test()
>>> t
<__main__.Test at 0x7fa91c307190>
>>> print t
<__main__.Test object at 0x7fa91c307190>
# 看到了么?上面打印类对象并不是很友好,显示的是对象的内存地址
# 下面我们重构下该类的__repr__以及__str__,看看它们俩有啥区别
# 重构__repr__
class TestRepr(Test):
    def __repr__(self):
        return &#39;TestRepr(%s)&#39; % self.data
>>> tr = TestRepr()
>>> tr               直接终端显示,不print就是面向程序员
TestRepr(hello, world!)
>>> print tr         print是面向程序员
TestRepr(hello, world!)
# 重构__repr__方法后,不管直接输出对象还是通过print打印的信息都按我们__repr__方法中定义的格式进行显示了
# 重构__str__
calss TestStr(Test):
    def __str__(self):
        return &#39;[Value: %s]&#39; % self.data
>>> ts = TestStr()
>>> ts
<__main__.TestStr at 0x7fa91c314e50>
>>> print ts
[Value: hello, world!]
# 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen __str__ und __repr__?. 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