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