Wie Chris Lutz erwähnte wird dies durch die __repr__
Methode in Ihrer Klasse.
Aus der Dokumentation von repr()
:
Bei vielen Typen versucht diese Funktion, eine Zeichenkette zurückzugeben, die ein Objekt mit demselben Wert ergibt, wenn sie an eval()
, andernfalls ist die Darstellung eine in spitzen Klammern eingeschlossene Zeichenkette, die den Namen des Typs des Objekts zusammen mit zusätzlichen Informationen enthält, zu denen häufig der Name und die Adresse des Objekts gehören. Eine Klasse kann steuern, was diese Funktion für ihre Instanzen zurückgibt, indem sie eine __repr__()
Methode.
Gegeben die folgende Klasse Test:
class Test:
def __init__(self, a, b):
self.a = a
self.b = b
def __repr__(self):
return "<Test a:%s b:%s>" % (self.a, self.b)
def __str__(self):
return "From str method of Test: a is %s, b is %s" % (self.a, self.b)
verhält es sich in der Python-Shell folgendermaßen:
>>> t = Test(123, 456)
>>> t
<Test a:123 b:456>
>>> print repr(t)
<Test a:123 b:456>
>>> print(t)
From str method of Test: a is 123, b is 456
>>> print(str(t))
From str method of Test: a is 123, b is 456
Wenn keine __str__
Methode definiert ist, print(t)
(oder print(str(t))
) wird das Ergebnis von __repr__
stattdessen
Wenn keine __repr__
Methode definiert ist, wird die Standardmethode verwendet, was in etwa gleichbedeutend ist mit.
def __repr__(self):
return "<%s instance at %s>" % (self.__class__.__name__, id(self))