Ich erhoffe mir da didaktische Vorteile, wissen tu ich es natürlich nicht.
Zur Einführung in OOP könnte man also zuerst mal nur das erste Beispiel machen. Was noch nicht den Megamehrwert gegenüber einer anderen Lösung bietet. Dann könnte man dahingehend, dass es erst richtig interessant wird, wenn man Methoden zur Manipulation des Objekts hat, zuerst sowas wie die Methode hinzufuegen definieren, dann schrittweise die Idee eines Klappmenüs aufbringen und die Umsetzung, dann langsam beginnen. (Einen kompletten Vortrag zu meinen didaktischen Überlegungen spar ich mir jetzt, wenns recht ist, ggg)
Die Idee eintraege als lokale Variable in __str__ zu definieren finde ich auch nicht schlecht.
Die Frage aller Fragen aber natürlich ist: Was meinen die Pythonmeister hier dazu?
Code: Alles auswählen
class Menue:
kopf = "----------Menü-----------\n"
option_E = "E für Ende\n"
fuss = "-------------------------"
def __init__(self, eintraege):
self.eintraege = eintraege
def __str__(self):
eintraege = [str(i + 1) + ". " + eintrag + "\n" for i, eintrag in enumerate(self.eintraege)]
eintraege = "".join(eintraege)
return self.kopf + eintraege + self.option_E + self.fuss
## def hinzufuegen(self, eintrag):
## self.eintraege.append(eintrag)
class KlappMenue(Menue):
option_a = "a für ausklappen\n"
option_e = "e für einklappen\n"
def __init__(self, eintraege, eingeklappt = True):
self.eingeklappt = eingeklappt
self.eintraege = eintraege
def __str__(self):
eintraege = [str(i + 1) + ". " + eintrag + "\n" for i, eintrag in enumerate(self.eintraege)]
if self.eingeklappt:
eintraege = "".join(eintraege[:3])
return self.kopf + eintraege + self.option_a + \
self.option_E + self.fuss
else:
eintraege = "".join(eintraege)
return self.kopf + eintraege + self.option_e + \
self.option_E + self.fuss
def ausklappen(self):
self.eingeklappt = False
def einklappen(self):
self.eingeklappt = True
if __name__ == "__main__":
menue = KlappMenue(["Umfang Rechteck",
"Fläche Rechteck",
"Umfang Dreieck",
"Fläche rechtwinkliges Dreieck",
"Umfang Kreis"])
LG
rolgal_reloaded