Verständnisfrage zu __str__
Verfasst: Sonntag 1. Juli 2012, 20:28
Hallo Forum!
In meinem Lehrbuch steht folgendes Beispielskript:
Die Ausgabe ist:
Was ich nun nicht recht verstehe: Im Skript wird ja __str__ überschrieben, so dass die Stringrepräsentation so aussieht:
Name
Mutter von Name: Name
Vater von Name: Name
Innerhalb der __str__ Methode wird selbige dann für die Elternteile rekursiv aufgerufen. Warum aber fehlt bei der Ausgabe der Elternteile die Zeile, in der nur der Name der Person steht? Müsste die Ausgabe nicht eher so aussehen? :
In meinem Lehrbuch steht folgendes Beispielskript:
Code: Alles auswählen
class Stammbaum:
def __init__(self, name, vater, mutter):
self.name = name
self.vater = vater
self.mutter = mutter
def __str__(self):
s = ""
if self.name:
s += self.name + '\n'
if self.mutter:
s += 'Mutter von ' + self.name + ': ' + str(self.mutter)
if self.vater:
s += 'Vater von ' + self.name + ': ' + str(self.vater)
return s
sarah = Stammbaum('Sarah', None, None)
willy = Stammbaum('Willy', None, None)
marianne = Stammbaum('Marianne', None, None)
anton = Stammbaum('Anton', None, None)
marlene = Stammbaum('Marlene', willy, sarah)
werner = Stammbaum('Werner', anton, marianne)
jenny = Stammbaum('Jenny', werner, marlene)
print(jenny)
Code: Alles auswählen
Jenny
Mutter von Jenny: Marlene
Mutter von Marlene: Sarah
Vater von Marlene: Willy
Vater von Jenny: Werner
Mutter von Werner: Marianne
Vater von Werner: Anton
Name
Mutter von Name: Name
Vater von Name: Name
Innerhalb der __str__ Methode wird selbige dann für die Elternteile rekursiv aufgerufen. Warum aber fehlt bei der Ausgabe der Elternteile die Zeile, in der nur der Name der Person steht? Müsste die Ausgabe nicht eher so aussehen? :
Code: Alles auswählen
Jenny
Mutter von Jenny: Marlene
[b]Marlene[/b]
Mutter von Marlene: Sarah
Vater von Marlene: Willy
Vater von Jenny: Werner
[b]Werner[/b]
Mutter von Werner: Marianne
Vater von Werner: Anton