Moje pytanie jest są dwa następujące fragmenty kodu uruchomić samo przez interpreter:python: czy pola właściwości są automatycznie buforowane?
class A(object):
def __init__(self):
self.__x = None
@property
def x(self):
if not self.__x:
self.__x = ... #some complicated action
return self.__x
i znacznie prostszy:
class A(object):
@property
def x(self):
return ... #some complicated action
czyli jest interpreter wystarczająco inteligentny, aby buforować właściwość x
?
Moje założenie jest takie, że x
nie ulega zmianie - ustalenie, że jest to trudne, ale gdy raz go znajdziesz, nie ma powodu, aby go znaleźć ponownie.
memoize dekorator jest chyba przesadą za pomocą prostego nieruchomości Pythona. – SingleNegationElimination
Należy również zauważyć, że w międzyczasie znajduje się dekorator ['functools.lru_cache (maxsize = 128, typed = False)'] (https://docs.python.org/3/library/functools.html#functools.lru_cache) (który zezwala również na parametr 'maxsize = None') –