Regeln im Objekt schützen
Problem
konto.stand = -1000 # unsinnig?
tier.hunger = -99
Besser: nur über Methoden ändern, die prüfen.
Beispiel
class Konto:
def __init__(self, stand=0):
self.stand = stand
def einzahlen(self, betrag):
if betrag <= 0:
print("Betrag muss positiv sein.")
return
self.stand = self.stand + betrag
def abheben(self, betrag):
if betrag <= 0:
print("Betrag muss positiv sein.")
return
if betrag > self.stand:
print("Nicht genug Guthaben.")
return
self.stand = self.stand - betrag
Rate mal!
Warum nicht alles frei setzen?
Auflösung
Damit Regeln (nicht negativ, Limits) zentral und sicher bleiben.
Probiere es selbst
Experiment 1
Hunger nie unter 0.
Experiment 2
Leben nie über 3.
Experiment 3
Fehlermeldung bei ungültigem Betrag.
Fehlerdetektiv
def abheben(self, betrag):
self.stand = self.stand - betrag
ohne Prüfung.
Hinweis
Negativer Stand möglich – Regeln ergänzen.
Übungen
Level 1
set_hunger nur 0–10.
Level 2
Konto einzahlen/abheben mit Regeln.
Level 3
Haustier: fuettern nur wenn hunger groesser 0.
Level-1-Lösung
class Tier:
def __init__(self):
self.hunger = 5
def set_hunger(self, wert):
if wert < 0 or wert > 10:
print("Ungueltig")
return
self.hunger = wert
Mini-Quiz
Schutz sitzt! Mini-Projekt: Virtuelles Haustier.