Передача аргументов декоратору

Я хочу передать список значений декоратору. Каждая функция, которая оформлена декоратором, передает свой список значений. Я использую decorator библиотека питонов

Вот что я пытался -

from decorator import decorator
def dec(func, *args):
     // Do something with the *args - I guess *args contains the arguments
     return func()

dec = decorator(dec)

@dec(['first_name', 'last_name'])
def my_function_1():
    // Do whatever needs to be done

@dec(['email', 'zip'])
def my_function_2():
    // Do whatever needs to be done

Однако это не работает. Выдает ошибку - AttributeError: 'list' object has no attribute 'func_globals'

Как я могу это сделать?

1 ответ

Вы можете реализовать это без библиотеки декоратора

def custom_decorator(*args, **kwargs):
    # process decorator params
    def wrapper(func):
        def dec(*args, **kwargs):
            return func(*args, **kwargs)
        return dec
    return wrapper

@custom_decorator(['first_name', 'last_name'])
def my_function_1():
    pass
@custom_decorator(['email', 'zip'])
def my_function_2():
    pass
Другие вопросы по тегам