Аргументы декоратора класса Python

Я пытаюсь передать необязательные аргументы своему декоратору класса в python. Ниже кода, который у меня сейчас есть:

class Cache(object):
    def __init__(self, function, max_hits=10, timeout=5):
        self.function = function
        self.max_hits = max_hits
        self.timeout = timeout
        self.cache = {}

    def __call__(self, *args):
        # Here the code returning the correct thing.


@Cache
def double(x):
    return x * 2

@Cache(max_hits=100, timeout=50)
def double(x):
    return x * 2

Второй декоратор с аргументами для перезаписи дефолтного ( max_hits = 10, timeout = 5 в моем __ init __ функция), не работает, и я получил исключение TypeError: __init __ () принимает как минимум 2 аргумента (3 задано) . Я пробовал много решений и читал статьи об этом, но здесь я все еще не могу заставить его работать.

Есть идеи решить эту проблему? Спасибо!

14
задан Dachmt 20 September 2011 в 21:34
поделиться