mobile theme mode icon
theme mode light icon theme mode dark icon
Random Question Náhodný
speech play
speech pause
speech stop

Porozumění dekorátorům v Pythonu

Dekorátory jsou návrhový vzor, ​​který vám umožňuje upravit nebo rozšířit chování objektu, aniž byste změnili původní implementaci objektu. Jinými slovy, dekorátory vám umožňují přidávat nové funkce k existujícímu objektu, aniž byste měnili jeho základní kód.

Dekorátor je obvykle funkce, která bere objekt jako argument a vrací nový objekt, který „zabalí“ původní objekt. Nový objekt má stejné metody a atributy jako původní objekt, ale má také některé další funkce nebo chování, které poskytuje dekorátor. ()“, díky kterému se auto pohybuje. Můžete vytvořit dekoratér s názvem `SpeedLimitDecorator`, který upravuje metodu `drive()` tak, aby omezovala rychlost auta. `SpeedLimitDecorator` vezme původní objekt `Car` jako argument a vrátí nový objekt `Car`, který má stejné metody a atributy jako původní `Car`, ale s přidanou funkcí omezení rychlosti.

Zde je příklad toho, jak můžete použít dekorátor v Pythonu:
```
class Car:
def drive(self):
print("Auto jede")

class SpeedLimitDecorator:
def __init__(self, car):
self. car = car

def drive(self):
self.car.drive()
print("Auto je nyní omezeno na 50 mph")

car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # prints "Auto jede" a "Auto je nyní omezeno na 50 mph"
```
V tomto příkladu třída `SpeedLimitDecorator` přebírá objekt `Car` jako argument ve svém konstruktoru a poté upravuje `drive( )` metoda původního objektu `Car` k omezení jeho rychlosti. Třída `SpeedLimitDecorator` má také svou vlastní metodu `drive()`, která volá původní metodu `drive()` zabaleného objektu, ale s přidaným omezením 50 mph.

Decorators jsou mocným nástrojem pro úpravu nebo rozšiřování existujících objektů aniž by se změnila jejich původní implementace. Lze je použít k přidání nových funkcí, úpravě chování nebo dokonce k nahrazení částí implementace objektu, aniž by to ovlivnilo zbytek kódu.

Knowway.org používá cookies, aby vám mohl poskytovat lepší služby. Používáním Knowway.org souhlasíte s naším používáním cookies. Podrobné informace naleznete v našem textu Zásad používání souborů cookie. close-policy