Python lernen · 03.09.2026
Python lernen: Klassen
Klassen bündeln Daten und Funktionen zu Objekten — die Blaupause für Helden, Monster und ganze Spielwelten. Mit Vererbung, Übungen und Quiz.
Bis jetzt lebten deine Daten lose herum: eine Variable fürs Gold, eine für die HP, eine Liste fürs Inventar. Klassen bündeln alles, was zusammengehört, zu einem Objekt — samt den Funktionen (Methoden), die damit arbeiten. Genau so ist Falkenmoor aufgebaut: Die Klasse Spieler hält Name, Inventar und Position, die Klasse Engine steuert das Spiel.
Vom Bauplan zum Objekt
class Held:
def __init__(self, name, hp=30):
self.name = name
self.hp = hp
def getroffen(self, schaden):
self.hp -= schaden
return self.hp
heldin = Held("Mirabel")
print(heldin.name, "hat noch", heldin.getroffen(7), "HP")__init__ läuft automatisch beim Erstellen und baut das Objekt auf. self ist das jeweilige Objekt selbst — Python übergibt es heimlich als ersten Parameter, du schreibst es nur in die Definition. Die Blaupause kann beliebig oft gestanzt werden:
a = Held("Mirabel")
b = Held("Thorak", hp=40)
b.getroffen(10)
print(a.hp, b.hp) # 30 30 — a merkt sich nichts von b's SchadenVererbung
Eine Klasse kann eine andere erweitern: Sie erbt alle Methoden und Attribute und fügt eigene hinzu. Mit super().__init__(...) ruft sie den Bauplan der Elternklasse auf:
class Magier(Held):
def __init__(self, name, mana=50):
super().__init__(name)
self.mana = mana
def zaubern(self):
if self.mana >= 10:
self.mana -= 10
print(f"{self.name} schleudert einen Blitz!")
merlin = Magier("Merlin")
merlin.zaubern()
print(merlin.hp) # vererbt: hp existiert auch hierWarum Klassen?
- Zusammengehöriges bleibt zusammen: HP und die Funktion, die HP verändert, wohnen im selben Objekt.
- Wiederverwendbar: Ein Bauplan, beliebig viele Instanzen — Helden, Monster, Räume.
- Erweiterbar: Vererbung erlaubt Varianten, ohne Bestehendes zu kopieren.
So übst du das
- Waffenwerkstatt: Klasse
Waffemit Schaden und Haltbarkeit — jedesbenutzen()mindert sie, bei 0 bricht sie. - Sparbuch: Klasse
Kontomiteinzahlen(),abheben()und Überziehungsschutz. - Monster-Zoo: Drei Monsterklassen mit unterschiedlichen Schadenswerten — alle erben von einer Basis-Klasse
Kreatur. - Rückblick: Deine Funktionen aus Artikel 5 hätten sämtliche Werte als Parameter bekommen — Methoden finden ihre Daten über
selfselbst.
Übungen
Übung 1 — Rechteck-Klasse
Baue Rechteck mit den Attributen Breite und Höhe sowie den Methoden flaeche() und umfang().
Musterlösung zeigen
class Rechteck:
def __init__(self, breite, hoehe):
self.breite = breite
self.hoehe = hoehe
def flaeche(self):
return self.breite * self.hoehe
def umfang(self):
return 2 * (self.breite + self.hoehe)
r = Rechteck(3, 4)
print(r.flaeche(), r.umfang()) # 12 14Übung 2 — Das sichere Konto
Baue Konto mit Guthaben, einzahlen(betrag) und abheben(betrag) — abheben darf das Guthaben nie unter 0 sinken lassen (gib True/False für Erfolg zurück).
Musterlösung zeigen
class Konto:
def __init__(self, stand=0):
self.stand = stand
def einzahlen(self, betrag):
self.stand += betrag
def abheben(self, betrag):
if betrag > self.stand:
return False
self.stand -= betrag
return True
k = Konto(20)
print(k.abheben(50)) # False
print(k.abheben(10)) # TrueÜbung 3 — Die vergängliche Waffe
Erweitere Waffe um Haltbarkeit: Jedes benutzen() senkt sie um 1; bei 0 gibt die Methode „Die Waffe ist zerbrochen!“ aus.
Musterlösung zeigen
class Waffe:
def __init__(self, name, schaden, haltbarkeit=5):
self.name = name
self.schaden = schaden
self.haltbarkeit = haltbarkeit
def benutzen(self):
if self.haltbarkeit <= 0:
print("Die Waffe ist zerbrochen!")
return
self.haltbarkeit -= 1
print(f"{self.schaden} Schaden (Haltbarkeit {self.haltbarkeit})")Übung 4 — Vererbung im Zoo
Baue Kreatur (name, hp, lebt()) und leite Goblin ab — er schlägt zurück: konter(schaden) verringert seine HP.
Musterlösung zeigen
class Kreatur:
def __init__(self, name, hp):
self.name = name
self.hp = hp
def lebt(self):
return self.hp > 0
class Goblin(Kreatur):
def konter(self, schaden):
self.hp -= schaden
return self.lebt()
g = Goblin("Griknak", 15)
print(g.konter(20)) # False — er lebt nicht mehrQuiz — Teste dich
Erst überlegen, dann aufklappen — so trainiert es am meisten!
- Was ist
self? - Wann genau läuft
__init__? a = Held("A"); b = Held("B")— teilen sichaundbihre HP?- Was unterscheidet
heldin.getroffenvonheldin.getroffen(7)? class Magier(Held)— was bekommt Magier von Held?
Quiz-Lösungen anzeigen
- Das konkrete Objekt, auf dem die Methode gerade arbeitet — Python übergibt es heimlich als ersten Parameter.
- Beim Erstellen einer Instanz, also bei
Held("Mirabel"). - Nein — jede Instanz hat eigene Attribute.
- Ohne Klammern ist es nur ein Verweis auf die Methode; erst die Klammern führen sie aus.
- Alle Methoden und Attribute von Held — plus alles, was Magier selbst definiert.
↩ Vorheriger Teil: Dictionaries
Weiter geht's mit dem nächsten Teil: NumPy-Arrays
Mehr aus der Kategorie „Python lernen“
- Python lernen: Tests 13.09.2026
- Python lernen: Dein Einstieg 10.09.2026
- Python lernen: Variablen 09.09.2026
- Python lernen: Konditionen (if/elif/else) 08.09.2026