On Thu, Nov 1, 2012 at 3:38 PM, Andrea Crotti <andrea.crott...@gmail.com> 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