SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Список вопросов Печать

Массив задекорированных функций и их вызов в Python


Метки: python декоратор 

Прошу растолковать или дать ссылки на такое. Например Flask использует маршруты. Основаны они на хитром вызове декораторов. Но я никак не могу понять каким образом хранится массив url и как при наступлении события вызывается конкретная функция, обёрнутая конкретным маршрутом? Т.е. например есть код с кучей функций, задекорированных с помощью одного метода, но с разными переменными. Соответственно при выполнении кода нужно ориентироваться на значение переменных в декораторе и выполнить декорируемую функцию.

Ответы

RemiZOffAlex  Создано: 2017-03-18 20:16:05.090198  Обновлено: 2017-03-18 20:16:05.090198

Предоставил ответ Игорь Шевченко @igor_shevchenko

mapping = {}

def register(name):
    def real_decorator(foo):
        mapping[name] = foo
        return foo
    return real_decorator
    
@register('a')
def foo():
    print('foo')

@register('b')
def bar():
    print('bar')


mapping['a']()  # prints 'foo'
mapping['b']()  # prints 'bar'

Возможно будут интересны и другие вопросы