Zum Inhalt

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.

Vor diesem Kapitel

Sie können Funktionen, Klassen, Bedingungen und einfache Typannotationen lesen.

Danach können Sie
  • 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
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

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

`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`

Implementierung und Tests zum Mitlesen

peano/utils.py · tests/test_utils.py

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:

`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`

Ausführungsablauf

Ausführungsablauf

Der Methodenkörper endet vor der Nachricht im Wrapper. Darum erscheinen innere rekursive Aufrufe zuerst.

Vorhersage vor dem Lauf

Bestimmen Sie den Code für `structural_str()` und `+` und notieren Sie beide erwarteten Zeilen.

Experiment · Für den Kurs nötige Python-Mechanismen Nicht ausgeführt
⌘ / Ctrl + Enter
Ausgabe
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.

Welche Aussage beschreibt die Implementierung von „Für den Kurs nötige Python-Mechanismen“ korrekt?