@cache(max_memory=1000) def func(arg1, arg2): return arg1+arg2
Сейчас я застопорился на том, как передать аргументы (этот самый max_memory) декоратору. Подскажите пример кода.
И, вообще, буду очень благодарен за мысли по решению задачи.
@cache(max_memory=1000) def func(arg1, arg2): return arg1+arg2
ShamanНасчет декораторов мне конкретный частный случай не ясен. Когда нужно передать атрибут декоратору функции - понятно, методу - никак не выходит. Вот и спрашиваю, есть ли у кого пример кода.
Уровень вопросов не соответствует уровню пролемы.Работа с дерокаторами разжевана здесь неоднократно. На всяий случай нужно узнать как кэширует sqlite, если она вообще этим занимается, дальше pickle.
def increment(i): def decorator(func): def wrapper(*args, **kw): return func(*args, **kw) + i return wrapper return decorator @increment(10) def foo(x): return x ** 2 print (foo (8))
>>> class A: ... def dd(m=None): ... def d(f): ... def g(*args): ... print(m) ... return f(*args) ... return g ... return d ... ... @dd(10) ... def f1(self, arg1, arg2): ... return arg1 + arg2 ... ... @dd(20) ... def f2(self, arg1, arg2): ... return arg1 * arg2 ... >>> a = A() >>> a.f1(1, 2) 10 3 >>> a.f2(3, 4) 20 12 >>>