Methoden überschreiben & super()

Das Superhelden-Upgrade

Fortschritt:
PHASE 1

Discovery & Checkpoint

Video & Einstieg
Verständnis-Check Beantworte die Frage zum Video

Gegeben ist folgender Code:

class Basis:
    def action(self):
        print("Start")

class Spezial(Basis):
    def action(self):
        super().action()
        print("Turbo")

obj = Spezial()
obj.action()

Welche Ausgabe erscheint in der Konsole?

PHASE 2

Parsons Puzzle

Struktur & Logik
Aufgabe Bringe die Bausteine per Drag & Drop in Reihenfolge

Die Basisklasse Held ist bereits fertig vordefiniert: Sie besitzt einen Konstruktor __init__(self, name, power)
sowie eine Methode angriff(), die "Standard-Schlag mit Kraft: <power>" ausgibt.

Bringe die Code-Blöcke in die richtige Reihenfolge, um die Klasse Superheld von Held abzuleiten,
den Basis-Konstruktor mit super() aufzurufen und die Methode angriff zu erweitern.

Tipp: Benutze die Anfasser zum Verschieben und ⇥- / ⇥+ zum Einrücken.

Dein Programm (Lösung) Hier die Zeilen in die richtige Reihenfolge bringen
Aussortierte Bausteine (Distraktoren) Hierhin fehlerhafte / nicht benötigte Zeilen ziehen
PHASE 3

Scaffolding & Bugfix

Geführte Praxis
Aufgabe Finde und behebe die Fehler im Code

In der Unterklasse CyberHeld fehlen zwei wichtige Stellen:
1. Der Aufruf des Eltern-Konstruktors mit super().
2. In der Methode status soll zuerst die status-Methode der Elternklasse aufgerufen werden.

Ergänze die Lücken, sodass Name, Basis-Power und der Schildwert sauber ausgegeben werden.

Tipp: Passe den Code im Editor an und klicke auf „Ausführen & Prüfen“.

script.py
Python 3.11
Konsole (Output)

                    

Musterlösung:
class BasisHeld:
    def __init__(self, name, power):
        self.name = name
        self.power = power

    def status(self):
        print(f"Held: {self.name} | Power: {self.power}")

class CyberHeld(BasisHeld):
    def __init__(self, name, power, shield):
        super().__init__(name, power)
        self.shield = shield

    def status(self):
        super().status()
        print(f"Schild: {self.shield}")

hero = CyberHeld("Shadow-Echo", 50, 100)
hero.status()
PHASE 4

Coding Challenge

Eigenständiges Coden
Ziel-Aufgabe Löse die Aufgabe und bestehe alle Tests

Erstelle ein modulares Klassensystem für Spezial-Helden:

1. Definiere die Basisklasse Hero:
- Konstruktor __init__(self, name, base_dmg) speichert self.name und self.base_dmg.
- Methode total_dmg(self) gibt den Basis-Schaden (self.base_dmg) zurück.

2. Definiere die abgeleitete Klasse TunedHero(Hero):
- Konstruktor __init__(self, name, base_dmg, boost) ruft super().__init__(name, base_dmg) auf und speichert zusätzlich self.boost = boost.
- Überschreibe total_dmg(self): Sie soll die Summe aus dem vererbten Basisschaden (mittels super().total_dmg()) und self.boost zurückgeben.

3. Erstelle ein Objekt champion der Klasse TunedHero mit:
- Name: "Shadow-Echo"
- Basis-Schaden: 50
- Boost: 45

4. Speichere das Ergebnis von champion.total_dmg() in der Variablen schaden und gib aus:
Gesamtschaden: <schaden>

Tipp: Schreibe deinen Code in den Editor und klicke auf „Code testen“.

solution.py
Python 3.11
Konsole (Output)

                    

Test-Suite

Musterlösung:
class Hero:
    def __init__(self, name, base_dmg):
        self.name = name
        self.base_dmg = base_dmg

    def total_dmg(self):
        return self.base_dmg

class TunedHero(Hero):
    def __init__(self, name, base_dmg, boost):
        super().__init__(name, base_dmg)
        self.boost = boost

    def total_dmg(self):
        return super().total_dmg() + self.boost

champion = TunedHero("Shadow-Echo", 50, 45)
schaden = champion.total_dmg()
print(f"Gesamtschaden: {schaden}")
PHASE 5

Das Ultimative Tuning-Arsenal

Kreatives Sandbox-Labor
Freies Experimentieren Erweitere deinen Code nach deinen eigenen Ideen

Erweitere das Helden-System um eigene spezialisierte Unterklassen wie TechHero, MagicHero
oder StealthHero. Nutze super(), um mehrere Eigenschaften (z. B. Rüstung, Mana, Krit-Chance)
zu kombinieren und eine eigene Methode ultimate_attack() zu schreiben!

Tipp: Passe den Code an, führe ihn aus oder lade dein fertiges Programm als Python-Datei herunter.

programm.py
Python 3.11
Konsole (Output)

                    

Lektion vollständig abgeschlossen!

Du hast alle Phasen gemeistert und kannst hier im Sandbox-Labor frei weiterprogrammieren.

Zur Übersicht
Lektion beendet
>_

Benutzereingabe (input)

Dein Python-Programm wartet auf eine Eingabe

Tippe deine Eingabe ein und drücke Enter ↵ oder klicke auf Absenden.