2.2 KiB
2.2 KiB
Kapitel 03: Methoden & Verhalten – Wenn Objekte lebendig werden ⚔️
Bisher haben unsere Objekte hauptsächlich Daten gespeichert (wie Name oder Kontostand). Aber Objekte können noch viel mehr: Sie können Aktionen ausführen!
Funktionen, die innerhalb einer Klasse definiert sind, nennt man Methoden.
🏃♀️ Was unterscheidet eine Methode von einer normalen Funktion?
- Eine Methode steht eingerückt in der Klasse.
- Das erste Argument ist immer
self. - Über
selfhat die Methode direkten Zugriff auf alle Eigenschaften des Objekts und kann diese verändern.
class Zauberer:
def __init__(self, name, mana=50):
self.name = name
self.mana = mana
# Das hier ist eine Methode:
def zauberspruch_wirken(self, mana_kosten):
if self.mana >= mana_kosten:
self.mana -= mana_kosten
print(f"{self.name} wirkt einen Zauber! Verbleibendes Mana: {self.mana}")
return True
else:
print(f"{self.name} hat nicht genug Mana!")
return False
merlin = Zauberer("Merlin", 30)
merlin.zauberspruch_wirken(10) # self wird automatisch merlin!
🤝 Wenn Objekte miteinander interagieren!
Das Spannendste an der objektorientierten Programmierung ist, wenn ein Objekt mit einem anderen Objekt interagiert.
Du kannst ein ganzes Objekt als Parameter an die Methode eines anderen Objekts übergeben:
class Spieler:
def __init__(self, name, geld):
self.name = name
self.geld = geld
def bezahle_an(self, empfaenger, betrag):
if self.geld >= betrag:
self.geld -= betrag
empfaenger.geld += betrag # Wir greifen direkt auf das andere Objekt zu!
return True
return False
🎯 Deine Aufgabe: Das RPG-Duell
In aufgabe.py erstellst du eine Klasse Held für ein Rollenspiel:
- Ein Held hat
name,leben,max_lebenundangriffskraft. - Ein Held kann Schaden erleiden (
schaden_erleiden), geheilt werden (heilen) und einen anderen Helden angreifen (angreifen(gegner)). - Du sorgst mit Bedingungen dafür, dass die Lebenspunkte nicht unter
0fallen und nicht übermax_lebensteigen!
Testen:
python3 test_aufgabe.py