Komisches Problem mit String.join(List) und __repr__
Verfasst: Samstag 3. März 2007, 02:21
Wenn ich mit
einen String ausgebe, erscheint dieser so:
Nun habe ich hier eine Liste, die nach und nach mit Werten gefüllt wird. Die Werte sind eigentlich Strings:
Um dieses `_value_`-Attribut auch vernünftig ausgeben zu können, hab ich mir in der zugehörigen Klasse eine `__repr__`-Methode gebastelt:
Die erste Zeile soll also ganz vorn stehen und alle weiteren darunter mit einem Tabulator eingerückt. Ich erhalte aber folgende Fehlermeldung:
Die Notlösung ist momentan diese hier:
Also rufe ich nochmal für jedes Item in der Liste `__repr__()` auf. Somit erhalte ich aber den String in Apostroph-Zeichen, was in meinem Fall irreführend sein kann:
Da der Python-Interpreter bei sowas selten lügt, ist mir vielleicht zwischendrin tatsächlich eine Instanz und kein String in die Liste gerutscht. Wie kriege ich den Typ der Variable raus?
Code: Alles auswählen
print "spam"
Code: Alles auswählen
spam
Code: Alles auswählen
self._values_ = []
# self._values_.append(...)
Code: Alles auswählen
def __repr__(self):
return "\n\t".join(self._values_)
Code: Alles auswählen
Traceback (most recent call last):
...
File "MyParser.py", line 37, in __repr__
return "\n\t".join(self._values_)
TypeError: sequence item 1: expected string, instance found
Code: Alles auswählen
def __repr__(self):
return "\n\t".join([value.__repr__() for value in self._values_])
Code: Alles auswählen
`spam`