mobile theme mode icon
theme mode light icon theme mode dark icon
Random Question Losowy
speech play
speech pause
speech stop

Zrozumienie dekoratorów w Pythonie

Dekoratory to wzorzec projektowy, który pozwala modyfikować lub rozszerzać zachowanie obiektu bez zmiany oryginalnej implementacji obiektu. Innymi słowy, dekoratory pozwalają na dodanie nowej funkcjonalności do istniejącego obiektu bez modyfikowania jego podstawowego kodu.…
Dekorator to zazwyczaj funkcja, która przyjmuje obiekt jako argument i zwraca nowy obiekt, który „opakuje” oryginalny obiekt. Nowy obiekt ma te same metody i atrybuty, co obiekt oryginalny, ale ma także dodatkową funkcjonalność lub zachowanie zapewnione przez dekorator.

Załóżmy na przykład, że masz klasę o nazwie „Samochód”, która ma metodę zwaną „drive” ()`, który sprawia, że ​​samochód się porusza. Można utworzyć dekorator o nazwie `SpeedLimitDecorator`, który modyfikuje metodę `drive()` w celu ograniczenia prędkości samochodu. `SpeedLimitDecorator` przyjmie oryginalny obiekt `Car` jako argument i zwróci nowy obiekt `Car`, który ma te same metody i atrybuty co oryginalny `Car`, ale z dodatkową funkcjonalnością ograniczania prędkości.

Tutaj jest przykład użycia dekoratora w Pythonie:
```
class Car:
def drive(self):
print("Samochód prowadzi")

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

def drive(self):
self.car.drive()
print("Prędkość samochodu jest teraz ograniczona do 50 mil na godzinę")

car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # wydruków „Samochód jedzie” i „Samochód jest teraz ograniczony do 50 mil na godzinę”
```
W tym przykładzie klasa `SpeedLimitDecorator` przyjmuje obiekt `Car` jako argument w swoim konstruktorze, a następnie modyfikuje wartość `drive( )` metody oryginalnego obiektu `Car`, aby ograniczyć jego prędkość. Klasa `SpeedLimitDecorator` ma również własną metodę `drive()`, która wywołuje oryginalną metodę `drive()` owiniętego obiektu, ale z dodatkowym ograniczeniem do 50 mil na godzinę.

Decorators to potężne narzędzie do modyfikowania lub rozszerzania istniejących obiektów bez zmiany ich pierwotnej implementacji. Można ich używać do dodawania nowych funkcjonalności, modyfikowania zachowania, a nawet zastępowania części implementacji obiektu bez wpływu na resztę kodu.

Knowway.org używa plików cookie, aby zapewnić Ci lepszą obsługę. Korzystając z Knowway.org, wyrażasz zgodę na używanie przez nas plików cookie. Aby uzyskać szczegółowe informacje, zapoznaj się z tekstem naszej Zasad dotyczących plików cookie. close-policy