Aufgaben-Python/03_methoden_und_verhalten
2026-08-29 13:03:42 +02:00
..
aufgabe.py Erweitere Übungsreihe um detaillierte Erklärungen, Stolperfallen-Guides und modernes HTML-Lernportal 2026-08-29 12:53:24 +02:00
index.html Füge vollständige, praxisnahe Klassenbeispiele in alle HTML-Seiten und READMEs ein 2026-08-29 13:03:42 +02:00
musterloesung.py Initialisiere didaktische Python OOP-Übungsreihe für Nachhilfe (Kapitel 01 bis 06) 2026-08-29 12:46:08 +02:00
README.md Füge vollständige, praxisnahe Klassenbeispiele in alle HTML-Seiten und READMEs ein 2026-08-29 13:03:42 +02:00
test_aufgabe.py Initialisiere didaktische Python OOP-Übungsreihe für Nachhilfe (Kapitel 01 bis 06) 2026-08-29 12:46:08 +02:00

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.


🏎️ Vollständiges Praxisbeispiel: Die Rennauto-Klasse

class Rennauto:
    def __init__(self, fahrer, speed, tank=50):
        self.fahrer = fahrer
        self.speed = speed          # z.B. 220 km/h
        self.tank = tank            # Aktueller Tank in Litern
        self.max_tank = tank        # Maximales Tankvolumen
        self.gefahrene_km = 0

    def fahren(self, km):
        verbrauch = km * 0.2
        if self.tank >= verbrauch:
            self.tank -= verbrauch
            self.gefahrene_km += km
            return f"{self.fahrer} fährt {km} km (Tank: {self.tank:.1f}L übrig)"
        else:
            return f"{self.fahrer} hat nicht genug Sprit für {km} km!"

    def tanken(self, liter):
        freier_platz = self.max_tank - self.tank
        getankt = min(freier_platz, liter)
        self.tank += getankt
        return f"{self.fahrer} tankt {getankt:.1f} Liter nach"

    def duell_gegen(self, gegner_auto):
        if self.speed > gegner_auto.speed:
            return f"{self.fahrer} überholt {gegner_auto.fahrer}!"
        else:
            return f"{gegner_auto.fahrer} zieht an {self.fahrer} vorbei!"

# Testen:
auto1 = Rennauto("Max", 240, 40)
auto2 = Rennauto("Lewis", 235, 50)
print(auto1.fahren(100))
print(auto1.duell_gegen(auto2))

🤝 Wenn Objekte miteinander interagieren!

Du kannst ein ganzes Objekt als Parameter an die Methode eines anderen Objekts übergeben (wie bei auto1.duell_gegen(auto2) oder ritter.angreifen(drache)).


⚠️ Typische Stolperfallen in diesem Kapitel

  1. Grenzen beachten (Min/Max Clamping):
    • Lebenspunkte dürfen nach Schaden nie negativ werden: if self.leben < 0: self.leben = 0
    • Lebenspunkte dürfen nach Heilung nie über max_leben steigen: self.leben = min(self.max_leben, self.leben + heilung)
  2. Besiegte Objekte können nicht mehr handeln:
    • Vor Aktionen wie Angreifen oder Heilen immer prüfen: if not self.ist_am_leben: return False bzw. return 0

🎯 Deine Aufgabe: Das RPG-Duell

In aufgabe.py erstellst du die Klasse Held:

  • __init__(self, name, leben=100, angriffskraft=15)
  • schaden_erleiden(self, schaden)
  • heilen(self, heilung)
  • angreifen(self, gegner)
  • status_text(self)

Testen:

python3 test_aufgabe.py