Supponiamo che tu abbia il seguente decoratore. Come può essere modificato per aggiungere un'appendice a qualche elenco di riferimenti a tutte le funzioni che decora?Come registrare all'interno di un decoratore tutte le funzioni che decora?
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
Ti importa dove "qualche elenco" è memorizzato? Vuoi che sia una variabile globale o in qualche modo collegata al decoratore stesso? – BrenBarn
renderlo una classe invece di un metodo ... quindi utilizzare una variabile statica per aggiungere ogni oggetto a '__init__' –
@BrenBarn No non mi interessa davvero dove è memorizzato l'elenco. –