Załóżmy, że masz następujący dekorator. W jaki sposób można go zmodyfikować, dodając do niektórych odnośników do wszystkich funkcji, które zdobi?Jak zarejestrować w dekoratorze wszystkie funkcje, które zdobi?
def memoize(obj):
cache = obj.cache = {}
@functools.wraps(obj)
def memoizer(*args, **kwargs):
if args not in cache:
cache[args] = obj(*args, **kwargs)
return cache[args]
return memoizer
@memoize
def foo(bar):
return bar ** 3
Czy obchodzi Cię, gdzie "niektóre listy" są przechowywane? Czy chcesz, aby była to zmienna globalna lub jakoś powiązana z samym dekoratorem? – BrenBarn
sprawiają, że klasa zamiast metody ... następnie użyj zmiennej statycznej do dołączenia każdego obiektu na '__init__' –
@BrenBarn Nie naprawdę nie obchodzi mnie, gdzie lista jest przechowywana. –