Objekt-Darstellung mit repr anpassen
In diesem Schritt lernen wir eine weitere spezielle Methode kennen: __repr__
. Die __repr__
-Methode wird verwendet, um eine entwicklerfreundliche String-Darstellung eines Objekts bereitzustellen. Wenn Sie ein Objekt ausgeben oder in einer interaktiven Sitzung inspizieren, ruft Python die __repr__
-Methode auf, um eine String-Darstellung zu erhalten.
Standardmäßig liefert die Ausgabe eines Objekts eine generische Darstellung, die den Typ und die Speicheradresse des Objekts enthält, was nicht sehr informativ ist. Wir können diese Darstellung anpassen, indem wir die __repr__
-Methode in unserer Klasse definieren.
Fügen wir unserer Dog
-Klasse eine __repr__
-Methode hinzu, um eine nützlichere Darstellung zu erhalten.
Öffnen Sie die Datei dog.py
im Verzeichnis ~/project
mit der WebIDE.
Fügen Sie die folgende Methode innerhalb der Dog
-Klassen-Definition hinzu:
## Define a simple Dog class
class Dog:
## Class attribute
species = "Canis familiaris"
## The __init__ method (constructor)
def __init__(self, name, breed):
self.name = name ## Instance attribute
self.breed = breed ## Instance attribute
## Method
def bark(self):
print("Woof!")
## The __repr__ method
def __repr__(self):
return f"Dog(name='{self.name}', breed='{self.breed}')"
## Create instances with name and breed
my_dog = Dog("Buddy", "Golden Retriever")
another_dog = Dog("Lucy", "Labrador")
## Access instance attributes
print(f"My dog's name is: {my_dog.name}")
print(f"My dog's breed is: {my_dog.breed}")
## Call the method
my_dog.bark()
print(f"Another dog's name is: {another_dog.name}")
print(f"Another dog's breed is: {another_dog.breed}")
another_dog.bark()
## Print the objects to see the __repr__ output
print(my_dog)
print(another_dog)
Speichern Sie die Datei dog.py
.
Führen Sie nun das Skript vom Terminal aus:
python dog.py
Sie sollten die vorherige Ausgabe sehen, gefolgt von der Ausgabe des Druckens der Objekte:
My dog's name is: Buddy
My dog's breed is: Golden Retriever
Woof!
Another dog's name is: Lucy
Another dog's breed is: Labrador
Woof!
Dog(name='Buddy', breed='Golden Retriever')
Dog(name='Lucy', breed='Labrador')
Beachten Sie die letzten beiden Zeilen der Ausgabe. Anstelle der standardmäßigen Speicheradressen-Darstellung sehen wir nun eine klare und informative Zeichenkette, die uns den Klassennamen und die Werte der Attribute name
und breed
für jedes Objekt mitteilt.
Die __repr__
-Methode sollte eine Zeichenkette zurückgeben, die, wenn möglich, verwendet werden könnte, um das Objekt neu zu erstellen. In diesem Fall ist Dog(name='Buddy', breed='Golden Retriever')
ein gültiger Python-Ausdruck, der ein identisches Dog
-Objekt erstellen würde.
Die Verwendung von __repr__
erleichtert das Debugging und die Inspektion von Objekten erheblich.