Я пытаюсь передать необязательные аргументы моему декоратору класса в 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__() takes at least 2 arguments (3 given)
. Я пробовал много решений и читал статьи об этом, но здесь я все еще не могу заставить его работать.
Любая идея решить это? Спасибо!