


Dekoratoren in Python verstehen
Dekoratoren sind ein Entwurfsmuster, mit dem Sie das Verhalten eines Objekts ändern oder erweitern können, ohne die ursprüngliche Implementierung des Objekts zu ändern. Mit anderen Worten: Mit Dekoratoren können Sie einem vorhandenen Objekt neue Funktionen hinzufügen, ohne seinen Kerncode zu ändern. Ein Dekorator ist normalerweise eine Funktion, die ein Objekt als Argument akzeptiert und ein neues Objekt zurückgibt, das das ursprüngliche Objekt „umschlie+t“. Das neue Objekt verfügt über dieselben Methoden und Attribute wie das ursprüngliche Objekt, verfügt jedoch auch über einige zusätzliche Funktionen oder Verhaltensweisen, die vom Dekorateur bereitgestellt werden. Nehmen wir zum Beispiel an, Sie haben eine Klasse namens „Car“, die über eine Methode namens „drive“ verfügt ()`, der das Auto in Bewegung setzt. Sie könnten einen Dekorator namens „SpeedLimitDecorator“ erstellen, der die „drive()“-Methode ändert, um die Geschwindigkeit des Autos zu begrenzen. Der „SpeedLimitDecorator“ würde das ursprüngliche „Car“-Objekt als Argument nehmen und ein neues „Car“-Objekt zurückgeben, das die gleichen Methoden und Attribute wie das ursprüngliche „Car“ hat, aber mit der zusätzlichen Funktionalität der Geschwindigkeitsbegrenzung.
Hier ist ein Beispiel für die Verwendung eines Dekorators in Python:
```
class Car:
def drive(self):
print("Das Auto fährt")
class SpeedLimitDecorator:
def __init__(self, car):
self. car = car
def drive(self):
self.car.drive()
print("Das Auto ist jetzt auf 50 Meilen pro Stunde begrenzt")
car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # druckt „Das Auto fährt“ und „Das Auto ist jetzt auf 50 Meilen pro Stunde begrenzt“
```
In diesem Beispiel nimmt die Klasse „SpeedLimitDecorator“ ein „Car“-Objekt als Argument in ihrem Konstruktor und ändert dann das „drive( )“-Methode des ursprünglichen „Auto“-Objekts, um seine Geschwindigkeit zu begrenzen. Die Klasse „SpeedLimitDecorator“ verfügt auch über eine eigene „drive()“-Methode, die die ursprüngliche „drive()“-Methode des umhüllten Objekts aufruft, allerdings mit der zusätzlichen Beschränkung auf 50 Meilen pro Stunde.
Decorators sind ein leistungsstarkes Werkzeug zum Ändern oder Erweitern vorhandener Objekte ohne ihre ursprüngliche Implementierung zu ändern. Sie können verwendet werden, um neue Funktionen hinzuzufügen, das Verhalten zu ändern oder sogar Teile der Implementierung eines Objekts zu ersetzen, ohne den Rest des Codes zu beeinträchtigen.



