On Thu, Nov 1, 2012 at 3:38 PM, Andrea Crotti <[email protected]> wrote:
> What I would like to write is
> @lazy_property
> def var_lazy(self):
> return long_computation()
>
> and this should imply that the long_computation is called only once..
If you're using Python 3.2+, then functools.lru_cache probably
suffices for your needs.
@property
@functools.lru_cache()
def var_lazy(self):
return long_computation()
If you really need to shorten that to a single declaration:
def lazy_property(func):
return property(functools.lru_cache()(func))
--
http://mail.python.org/mailman/listinfo/python-list