Discovery & Checkpoint
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?
Parsons Puzzle
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.
Scaffolding & Bugfix
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“.
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()
Coding Challenge
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“.
Test-Suite
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}")
Das Ultimative Tuning-Arsenal
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.
Lektion vollständig abgeschlossen!
Du hast alle Phasen gemeistert und kannst hier im Sandbox-Labor frei weiterprogrammieren.