43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# Kapitel 08: Operator Overloading & Dunder-Methoden ➕
|
||
|
||
In diesem Kapitel lernst du, wie du deine eigenen Klassen mit Pythons eingebauten Operatoren (`+`, `-`, `*`, `==`, `<`, `len()`, `abs()`) ausstattest.
|
||
|
||
---
|
||
|
||
## 🎯 Was du lernst
|
||
|
||
1. **Was sind Dunder-Methoden?** Methoden mit führenden und nachgestellten doppelten Unterstrichen (**D**ouble **Under**score, z.B. `__add__`).
|
||
2. **Magische Übersetzung:** Wenn du `a + b` schreibst, ruft Python im Hintergrund `a.__add__(b)` auf.
|
||
3. **Mathematische Operatoren überladen:**
|
||
- `__add__(self, other)` für `+`
|
||
- `__sub__(self, other)` für `-`
|
||
- `__mul__(self, other)` für `*` (z.B. Skalarmultiplikation mit Zahlen oder Skalarprodukt)
|
||
- `__rmul__(self, other)` für `*` von links (z.B. `3 * v`)
|
||
4. **Vergleiche überladen:**
|
||
- `__eq__(self, other)` für `==`
|
||
- `__lt__(self, other)` für `<`
|
||
- `__le__(self, other)` für `<=`
|
||
5. **Objekt- und Container-Dunder:**
|
||
- `__str__` (für Menschen) vs. `__repr__` (für Entwickler / Debugger)
|
||
- `__abs__` für `abs(objekt)` (z.B. Vektorlänge)
|
||
- `__len__` für `len(objekt)` (z.B. Anzahl von Wegpunkten)
|
||
- `__getitem__` für Indexzugriff `objekt[i]`
|
||
|
||
---
|
||
|
||
## 📁 Die Dateien in diesem Ordner
|
||
|
||
- **`index.html`**: Interaktive Lernseite mit visuellen Tabellen, Code-Beispielen & Ausklapp-Hilfen.
|
||
- **`aufgabe.py`**: Dein Arbeitsblatt zum Implementieren von `Vektor2D` und `Wegstrecke`.
|
||
- **`test_aufgabe.py`**: Automatische Tests (`python3 test_aufgabe.py`).
|
||
- **`musterloesung.py`**: Vollständig ausprogrammierte Beispiellösung.
|
||
|
||
---
|
||
|
||
## 🚀 Schnellstart
|
||
|
||
```bash
|
||
# 1. Bearbeite aufgabe.py
|
||
# 2. Teste deine Lösung:
|
||
python3 test_aufgabe.py
|
||
```
|