Heim > Backend-Entwicklung > Python-Tutorial > Benutzerdefinierte Python-Klasse __str__ (detaillierte Beispiele)

Benutzerdefinierte Python-Klasse __str__ (detaillierte Beispiele)

乌拉乌拉~
Freigeben: 2018-08-23 13:37:55
Original
2485 Leute haben es durchsucht

Im folgenden Artikel erfahren wir, was benutzerdefinierte Klassen in Python sind. Erfahren Sie, was benutzerdefinierte Python-Klassen sind und welche Rolle benutzerdefinierte Python-Klassen bei der Python-Programmierung spielen können.

Wenn Sie Variablen- oder Funktionsnamen in der Form __xxx__ wie __slots__ sehen, achten Sie bitte darauf, dass diese in Python spezielle Verwendungszwecke haben.

Wir wissen bereits, wie man __slots__ verwendet, und wir wissen auch, wie man die Methode __len__() verwendet, damit die Klasse auf die Funktion len() reagieren kann.

Darüber hinaus gibt es in Python-Klassen viele Spezialfunktionen, die uns dabei helfen können, Klassen anzupassen.

Benutzerdefinierte Python-Klasse __str__ (detaillierte Beispiele)

__str__

Wir definieren zunächst eine Student-Klasse und drucken eine Instanz:

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...
>>> print(Student('Michael'))
<__main__.Student object at 0x109afb190>
Nach dem Login kopieren

Drucken Sie eine Reihe von <__main__.Student-Objekten unter 0x109afb190> aus, was ziemlich hässlich aussieht.

Wie kann ich es schön ausdrucken? Sie müssen nur die Methode __str__() definieren und einen gut aussehenden String zurückgeben:

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...     def __str__(self):
...         return &#39;Student object (name: %s)&#39; % self.name
...
>>> print(Student(&#39;Michael&#39;))
Student object (name: Michael)
Nach dem Login kopieren

Die auf diese Weise ausgedruckte Instanz sieht nicht nur gut aus, sondern erleichtert auch das Erkennen der wichtigen Daten in der Instanz .

Aber vorsichtige Freunde werden feststellen, dass das gedruckte Beispiel immer noch nicht gut aussieht, wenn Variablen direkt ohne Drucken eingegeben werden:

>>> s = Student(&#39;Michael&#39;)
>>> s<__main__.Student object at 0x109afb310>
Nach dem Login kopieren

Das liegt daran, dass der direkte Aufruf zum Anzeigen von Variablen nicht __str__() ist. Aber _ _repr__(), der Unterschied zwischen den beiden besteht darin, dass __str__() die vom Benutzer gesehene Zeichenfolge zurückgibt, während __repr__() die vom Programmentwickler gesehene Zeichenfolge zurückgibt. Mit anderen Worten, __repr__() dient dem Debuggen.

Die Lösung besteht darin, ein weiteres __repr__() zu definieren. Aber normalerweise sind die Codes von __str__() und __repr__() gleich, daher gibt es eine faule Schreibweise:

class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return &#39;Student object (name=%s)&#39; % self.name
    __repr__ = __str__
Nach dem Login kopieren

Das Obige ist der gesamte in diesem Artikel beschriebene Inhalt Relevante Kenntnisse der benutzerdefinierten Python-Klasse __str__, ich hoffe, Sie können die Informationen verwenden, um den oben genannten Inhalt zu verstehen. Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.

Weitere Informationen zu diesem Thema finden Sie in der Spalte Python-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Python-Klasse __str__ (detaillierte Beispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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