Înțelegerea decoratorilor în Python
Decoratorii sunt un model de design care vă permite să modificați sau să extindeți comportamentul unui obiect fără a modifica implementarea originală a obiectului. Cu alte cuvinte, decoratorii vă permit să adăugați o nouă funcționalitate unui obiect existent fără a modifica codul său de bază. Noul obiect are aceleași metode și atribute ca și obiectul original, dar are și o funcționalitate suplimentară sau un comportament oferit de decorator.
De exemplu, să presupunem că aveți o clasă numită `Car` care are o metodă numită `drive ()` care face mașina să se miște. Puteți crea un decorator numit `SpeedLimitDecorator` care modifică metoda `drive()` pentru a limita viteza mașinii. `SpeedLimitDecorator` va lua obiectul original `Mașină` ca argument și va returna un nou obiect `Mașină` care are aceleași metode și atribute ca și `Mașina` original, dar cu funcționalitatea adăugată de limitare a vitezei.
Iată un exemplu de cum ați putea folosi un decorator în Python:
```
class Car:
def drive(self):
print(„Mașina conduce”)
class SpeedLimitDecorator:
def __init__(self, car):
self. car = car
def drive(self):
self.car.drive()
print(„Mașina este acum limitată la 50 mph”)
car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # printuri „Mașina conduce” și „Mașina este acum limitată la 50 mph”
```
În acest exemplu, clasa `SpeedLimitDecorator` preia un obiect `Mașină` ca argument în constructorul său și apoi modifică `drive( )` metoda obiectului `Mașină` original pentru a-i limita viteza. Clasa `SpeedLimitDecorator` are, de asemenea, propria sa metodă `drive()` care apelează metoda originală `drive()` a obiectului împachetat, dar cu limitarea adăugată de 50 mph.
Decoratorii sunt un instrument puternic pentru modificarea sau extinderea obiectelor existente. fără a modifica implementarea lor inițială. Ele pot fi folosite pentru a adăuga funcționalități noi, a modifica comportamentul sau chiar pentru a înlocui părți ale implementării unui obiect fără a afecta restul codului.



