Декоратор Python с параметрами

У меня есть модуль с функцией, прототипом которой является похож на класс потока.

def do(fn, argtuple=(), kwargdict={}, priority=0,
            block=False, timeout=0, callback=None, daemon=False)

    # do stuff

fn - вызываемый объект, а argtuple и kwargdict - позиционные и словарные аргументы, которые будут переданы вызываемому fn при его вызове.

Теперь я пытаюсь написать декоратор для этого, но я запутался. Я никогда не очень хорошо разбирался в декораторах. Есть ли способ создать декоратор, в котором я мог бы установить параметры, указанные выше, такие как тайм-аут, но передать argtuple и kwargdict, когда функция вызывается.

Так, например:

@do(priority=2)
def decoratedTask(arg, dic=3):
    #do stuff

decoratedTask(72)

Я не понимаю, как передать аргумент 72 времени выполнения декорированной функции. Я думаю, что декоратор должен быть классом, в котором метод __ call __ возвращает вызов функции, но я не уверен в синтаксисе того, как передавать такие аргументы.

Имеет ли это смысл?

6
задан Falmarri 20 December 2010 в 02:44
поделиться