Skip to main content
idego
Python

Klassenbasierte Dekoratoren – machen Sie Ihren Python-Code stilvoll

Von Idego Group

Klassenbasierte Dekoratoren – machen Sie Ihren Python-Code stilvoll

Ein Dekorator ist grundlegend eine Funktion, die eine andere Funktion akzeptiert und zusätzliche Logik ausführt, um das Verhalten der ursprünglichen Funktion zu erweitern oder zu modifizieren. Das Verständnis von Dekoratoren erfordert Kenntnisse über First-Class-Funktionen und Closures.

Wenn eine Funktion eine andere Funktion akzeptiert und möglicherweise Logik davor oder danach ausführt, entsteht das Dekoratormuster. Die @decorator_function-Syntax ist lediglich eine Kurzform für original_function = decorator_function(original_function).

Klassenbasierte Dekoratoren bestehen aus zwei Dunder-Methoden: __init__() für die Dekorator-Instanziierung und Parameterverarbeitung sowie __call__() für die Ausführung, wenn das dekorierte Objekt aufgerufen wird. Klassenbasierte Dekoratoren bieten verbesserte Lesbarkeit und eine bessere Trennung zwischen Dekoratordefinition und Wrapping-Logik im Vergleich zu funktionsbasierten Alternativen.

Die Vorteile von Dekoratoren stimmen mit dem Don't-Repeat-Yourself-Prinzip überein. Einmal erstellt, sind Dekoratoren rückwärtskompatibel und erfordern keine Änderungen am ausführenden Code — ein wesentlicher Vorteil bei der gleichzeitigen Aktualisierung mehrerer Methoden.

Ein praktisches Beispiel demonstriert den @LogException-Dekorator, der Ausnahmen behandelt, indem er sie in Dateien protokolliert. Dieser Dekorator akzeptiert Parameter wie Dateiname, Dateimodus und ein optionales Zeitstempel-Flag und zeigt, wie parametrisierte Dekoratoren für verschiedene Szenarien angepasst werden können. Der Dekorator umschließt elegant Parse-Methoden, ohne ihre Implementierung zu ändern, und ermöglicht die Wiederverwendung von Code in zahlreichen Funktionen.

Verwandte Artikel