Ein Objekt einer Klasse drucken in Python
-
Drucken eines Objekts in Python mit der Methode
__repr__()
-
Drucken eines Objekts in Python mit der Methode
__str__()
- Drucken eines Objekts in Python durch Hinzufügen einer neuen Klassenmethode
In diesem Tutorial werden verschiedene Methoden zum Drucken eines Klassenobjekts in Python untersucht. Angenommen, wir möchten eine Klasseninstanz mit der Funktion print()
drucken, z. B. mit der Anzeige der Daten oder Werte des Objekts. Wir können dies mit den unten erläuterten Methoden tun.
Drucken eines Objekts in Python mit der Methode __repr__()
Die Methode __repr__()
gibt die druckbare Darstellung des Objekts in Form einer Zeichenkette zurück. Standardmäßig wird der Name der Objektklasse und die Adresse des Objekts zurückgegeben.
Wenn wir ein Objekt in Python mit der Funktion print()
drucken, wird die Methode __str__()
des Objekts aufgerufen. Wenn es nicht definiert ist, gibt __str__()
den Rückgabewert der Methode __repr__()
zurück. Wenn wir versuchen, ein Objekt einer benutzerdefinierten Klasse mit der Funktion print()
zu drucken, wird daher der Rückgabewert der Methode __repr__()
zurückgegeben.
Daher können wir die Methode __repr__()
definieren oder überschreiben, um die Zusammenfassung oder die gewünschten Werte eines Objekts zu drucken.
Angenommen, wir haben eine benutzerdefinierte Klasse ClassA
ohne die Methode __repr__()
. Der folgende Beispielcode demonstriert die Ausgabe, wenn wir versuchen, ein Objekt der ClassA
ohne die Methode __repr__()
zu drucken.
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
A = classA()
print(A)
Ausgabe:
<__main__.classA object at 0x7fa29aa28c50>
Da wir die Methode __repr__()
nicht definiert haben, hat sie standardmäßig den Namen der Klasse und die Adresse des Objekts zurückgegeben.
Definieren wir nun die Methode __repr__()
der Klasse classA
und verwenden dann die Funktion print()
. print()
und print(repr())
sollten den gleichen Wert zurückgeben.
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
def __repr__(self):
return "This is object of class A"
A = classA()
print(A)
print(repr(A))
Ausgabe:
This is object of class A
This is object of class A
Drucken eines Objekts in Python mit der Methode __str__()
Die Methode __str__()
gibt die Zeichenkettenversion des Objekts in Python zurück. Wenn ein Objekt keine Methode __str__()
hat, gibt es denselben Wert zurück wie die Methode __repr__()
.
Wir haben in den obigen Beispielcodes gesehen, dass für den Fall, dass die Methode __str__()
nicht definiert ist, die Methode print()
die druckbare Darstellung des Objekts mit der Methode __repr__()
druckt.
Definieren wir nun die Methode __str__()
unserer Beispielklasse ClassA
und versuchen Sie dann, das Objekt der classA
mit der Funktion print()
zu drucken. Die Funktion print()
sollte die Ausgabe der Methode __str__()
zurückgeben.
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
def __repr__(self):
return "This is object of class A"
def __str__(self):
print("var1 =", self.var1)
print("var2 =", end=" ")
return self.var2
A = classA()
print(A)
Ausgabe:
var1 = 0
var2 = Hello
Drucken eines Objekts in Python durch Hinzufügen einer neuen Klassenmethode
Ein anderer Ansatz kann verwendet werden, anstatt die Methoden __str__()
und __repr__()
der Klasse zu überschreiben oder zu definieren. Innerhalb der Klasse kann eine neue print()-Methode beschrieben werden, die die Klassenattribute oder -werte unserer Wahl druckt.
Der folgende Beispielcode zeigt, wie Sie die Methode object.print()
definieren und dann verwenden, um ein Objekt in Python zu drucken.
class classA:
def __init__(self):
self.var1 = 0
self.var2 = True
self.var3 = "Hello"
def print(self):
print("var1 =", self.var1)
print("var2 =", self.var2)
print("var3 =", self.var3)
A = classA()
A.var2 = False
A.print()
Ausgabe:
var1 = 0
var2 = False
var3 = Hello