mobile theme mode icon
theme mode light icon theme mode dark icon
speech play
speech pause
speech stop

Розуміння декораторів у Python

Декоратори — це шаблон проектування, який дозволяє вам змінювати або розширювати поведінку об’єкта, не змінюючи оригінальну реалізацію об’єкта. Іншими словами, декоратори дозволяють додавати нову функціональність до існуючого об’єкта, не змінюючи його основний код.

Декоратор – це зазвичай функція, яка приймає об’єкт як аргумент і повертає новий об’єкт, який «огортає» вихідний об’єкт. Новий об’єкт має ті самі методи й атрибути, що й оригінальний об’єкт, але він також має деякі додаткові функції чи поведінку, надані декоратором.

Наприклад, припустімо, що у вас є клас під назвою `Car`, який має метод під назвою `drive ()`, що змушує автомобіль рухатися. Ви можете створити декоратор під назвою `SpeedLimitDecorator`, який змінює метод `drive()` для обмеження швидкості автомобіля. `SpeedLimitDecorator` прийме оригінальний об’єкт `Car` як аргумент і поверне новий об’єкт `Car`, який має ті самі методи й атрибути, що й оригінальний `Car`, але з додатковими функціями обмеження швидкості.

Ось приклад того, як можна використовувати декоратор у Python:
```
class Car:
def drive(self):
print("Автомобіль їде")

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

def drive(self):
self.car.drive()
print("Автомобіль тепер обмежено до 50 миль/год")

car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # друкує «Автомобіль їде» та «Автомобіль тепер обмежено 50 миль/год»
```
У цьому прикладі клас `SpeedLimitDecorator` приймає об’єкт `Car` як аргумент у своєму конструкторі, а потім змінює `drive( )` вихідного об’єкта `Автомобіль` для обмеження його швидкості. Клас `SpeedLimitDecorator` також має власний метод `drive()`, який викликає оригінальний метод `drive()` загорнутого об'єкта, але з додатковим обмеженням 50 миль/год.

Декоратори є потужним інструментом для модифікації або розширення існуючих об'єктів без зміни їх початкової реалізації. Їх можна використовувати для додавання нових функцій, зміни поведінки або навіть заміни частин реалізації об’єкта, не впливаючи на решту коду.

Knowway.org використовує файли cookie, щоб надати вам кращий сервіс. Використовуючи Knowway.org, ви погоджуєтесь на використання файлів cookie. Для отримання детальної інформації ви можете переглянути текст нашої Політики щодо файлів cookie. close-policy