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.
__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>
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 'Student object (name: %s)' % self.name ... >>> print(Student('Michael')) Student object (name: Michael)
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('Michael') >>> s<__main__.Student object at 0x109afb310>
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 'Student object (name=%s)' % self.name __repr__ = __str__
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!