Как создать декоратор в классе на Python?

Пользователь

от nicola , в категории: Python , 4 месяца назад

Как создать декоратор в классе на Python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от NicolasSsh , 4 месяца назад

@nicola  Для того, чтобы создать декоратор-класс, Вы можете воспользоваться библиотекой functools

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from functools import wraps # Импортируем из functools модуль для работы с декораторами

class Replicator:
    '''
    Данный декоратор принимает в аргументы переменную int - количество повторов функции
    '''

    def __init__(self, count):
        self.count = count

    def __call__(self, f): # Создаем функцию, которая будет срабатывать при вызове класса
        @wraps(f)

        def wrapper(*args, **kwargs):
            for _ in range(self.count):
                f(*args, **kwargs)

        return wrapper

@Replicator(5) # Над функцией обозначаем декоратор, в аргументах которого стоит число - это то, сколько раз выполнится функция
# Т.К это декоратор, то аргумент f(саму функцию) он получит автоматически
def GET(url):
    print(url)

if __name__ == "__main__":
    GET("dropcode.ru")

# Вывод :
# dropcode.ru
# dropcode.ru
# dropcode.ru
# dropcode.ru
# dropcode.ru