🐍 Python Nachhilfe & Selbstlern-Kurs

Objektorientierte Programmierung (OOP)

Lerne Schritt für Schritt, wie du eigene Klassen baust, Methoden nutzt und professionell mit automatischen Tests arbeitest.

👋 Willkommen zu deiner Übungsreihe!

Dieser Kurs begleitet dich durch die gesamte Objektorientierte Programmierung in Python – exakt abgestimmt auf dein Schulskriptum, aber mit viel mehr Erklärungen, Analogien, Visualisierungen und automatischen Tests!

🏗️ Die Grundidee von OOP in einem Satz:
Eine Klasse ist wie ein Bauplan (oder eine Plätzchen-Ausstechform). Ein Objekt ist das fertige Haus (oder das gebackene Plätzchen), das nach diesem Bauplan entstanden ist!
📚 Schulabgleich & Lehrplan:
Alle Kapitel sind 1:1 mit den Themen deines Informatik-Unterrichts (Type Hints, UML, Assoziationen, Referenzen, Vererbung, Tkinter) abgestimmt. Ausführlicher Plan in LEHRPLAN.md.

🌱 Phase 1: Grundlagen OOP & Entwicklungsumgebung

🧠 Phase 2: Fortgeschrittenes OOP, Speicher & Persistenz

Kapitel 07
🌳 Referenzen & Stammbäume
Speicherbereiche im RAM, Aliasing (b = a), is vs. == und Familienstammbaum-Klassen.
Kapitel 08 • Geplant
➕ Operator Overloading & Dunder
Eigene Klassen rechen- und vergleichbar machen mit __add__, __eq__, __lt__ für 2D-Vektoren & Kartenspiele.
Kapitel 09 • Geplant
🧬 Vererbung & super()
Basisklassen, Kindklassen, Code-Wiederverwendung und super().__init__() für Fahrzeugflotten & RPG-Helden.
Kapitel 10 - 12 • Geplant
🛡️ Exceptions, Persistenz & GUI
Polymorphie (10), Eigene Fehlerklassen (11), Spielstände dauerhaft mit JSON/CSV sichern (12) und Desktop-Apps mit Tkinter (13).

🧪 Wie benutze ich die Tests? (Komplette Test-Anleitung)

In der professionellen Softwareentwicklung schreibt man zu jedem Code automatische Unit Tests. Das Geniale daran: Du musst nie raten, ob deine Lösung stimmt! Das Testskript überprüft deine Funktionen in Sekundenbruchteilen mit vielen verschiedenen Testfällen.

1. Einen Test für ein einzelnes Kapitel ausführen

Öffne das Terminal in VS Code mit Strg + ` (Mac: Cmd + `). Wechsle in den jeweiligen Kapitelordner und starte das Testskript:

Terminal (Beispiel für Kapitel 01)
cd 01_einstieg_klassen
python3 test_aufgabe.py

2. Wie lese ich das Testergebnis?

✅ Alles bestanden (OK)

Ran 4 tests in 0.002s
OK

Perfekt! Alle Anforderungen sind erfüllt. Du bist bereit für das nächste Kapitel!

❌ Falsches Ergebnis (FAIL)

AssertionError: 25 != 40
berechne_endstand falsch

Dein Code stürzt nicht ab, aber liefert einen falschen Wert (z.B. falsche Rechenformel).

💥 Absturz / Syntax (ERROR)

AttributeError: 'Fahrrad'
object has no attribute 'gang'

Ein Attribut oder Methodenname fehlt oder ist falsch geschrieben (z.B. Tippfehler).

3. Gesamten Kursfortschritt auf einen Klick prüfen

Du möchtest wissen, wie viele Kapitel du schon gelöst hast? Führe im Hauptordner Aufgaben-Python einfach folgenden Befehl aus:

Terminal (Hauptordner)
python3 test_all.py
💡 Die 3 goldenen Regeln beim Arbeiten mit Tests:
  1. Immer return statt nur print(): Tests prüfen das, was eine Funktion mit return zurückliefert. Ein print() zeigt es zwar auf dem Bildschirm an, reicht dem Test aber nicht!
  2. Exakte Namen beachten: Wenn die Aufgabe def mutter_setzen(self): verlangt, darf die Methode nicht def MutterSetzen heißen (Python unterscheidet Groß- und Kleinschreibung).
  3. Fehlermeldungen von unten nach oben lesen: Ganz unten steht immer genau, was nicht gepasst hat!

🩺 Häufige Fragen & Troubleshooting

❌ Fehlermeldung: TypeError: ... takes 0 positional arguments but 1 was given

Ursache: Du hast bei einer Methode in deiner Klasse das self im Methodenkopf vergessen!

Lösung: Schreibe def meine_methode(self): statt def meine_methode():.

❌ Fehlermeldung: AttributeError: 'NoneType' object has no attribute '...'

Ursache: Eine Funktion oder Methode hat nichts zurückgegeben (also None), und du versuchst, darauf zuzugreifen.

Lösung: Prüfe, ob du am Ende der Methode das return ... vergessen hast!

❌ Wie wechsle ich im Terminal zwischen den Ordnern hin und her?

In einen Unterordner hinein: cd 01_einstieg_klassen

Einen Ordner nach oben zurück: cd ..

Inhalt des aktuellen Ordners auflisten: ls (oder dir auf Windows)