Aşağıdaki dekoratörünüz olduğunu varsayalım. Süslediği tüm işlevlere bazı liste referanslarını eklemek için nasıl değiştirilebilir?Bir dekoratörde nasıl kaydedileceği tüm işlevler nasıl kaydedilir?
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
"Bazı liste" nerede saklanır? Bunun global bir değişken olmasını mı yoksa bir şekilde dekoratörün kendisine mi bağlı kalmasını istersiniz? – BrenBarn
bunu bir yöntem yerine bir sınıf haline getirin ... sonra her bir nesneyi '__init__' üzerine eklemek için bir statik değişken kullanın –
@BrenBarn Hayır Gerçekten listenin nerede saklandığına dikkat etmiyorum. –