00 · Für den Kurs nötige Python-Mechanismen
Für den Kurs nötige Python-Mechanismen¶
Beginnen Sie mit Operator-Dispatch, Dekoratoren und Dataclasses, um einen Ausdruck bis zur Bibliotheksmethode zu verfolgen.
Sie können Funktionen, Klassen, Bedingungen und einfache Typannotationen lesen.
- die mathematische Definition von „Für den Kurs nötige Python-Mechanismen“ in eigenen Worten erklären
- ihre Darstellung in Python-Daten zeigen
- aus dem echten Code einen kleinen Ablauf vorhersagen
In Python fordern `a + b` und `a == b` die Methoden `__add__` und `__eq__` an. Ein Dekorator erhält und ersetzt bei der Definition ein Funktionsobjekt.
Eine eingefrorene Dataclass speichert unveränderliche Werte. Intern liefert eine mit `@log` dekorierte Methode Ergebnis und verzögerte Nachricht; der Wrapper gibt nur das Ergebnis weiter.
`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`
Mathematische Definition
Mathematische Definition¶
In Python fordern a + b und a == b die Methoden __add__ und __eq__ an. Ein Dekorator erhält und ersetzt bei der Definition ein Funktionsobjekt.
Datenrepräsentation
Datenrepräsentation¶
Eine eingefrorene Dataclass speichert unveränderliche Werte. Intern liefert eine mit @log dekorierte Methode Ergebnis und verzögerte Nachricht; der Wrapper gibt nur das Ergebnis weiter.
Python-Implementierung
Python-Implementierung¶
inner ruft die Methode auf, trennt (result, message), protokolliert bei Bedarf und gibt result zurück; @wraps erhält Metadaten.
Die im Kurs verwendete genaue Zuordnung:
Ausführungsablauf
Ausführungsablauf¶
Der Methodenkörper endet vor der Nachricht im Wrapper. Darum erscheinen innere rekursive Aufrufe zuerst.
Bestimmen Sie den Code für `structural_str()` und `+` und notieren Sie beide erwarteten Zeilen.
Erst vorhersagen, dann ausführen.
Prüfung durch Tests
Prüfung durch Tests¶
Tests schützen Ergebnis, öffentliche Signatur und verzögerte Nachrichtenauswertung.
Geltungsbereich und Grenzen
Geltungsbereich und Grenzen¶
Grundsyntax wird nicht wiederholt; erklärt wird nur die zum Lesen wesentliche Metaprogrammierung.