lazy properties?
Ian Kelly
ian.g.kelly at gmail.com
Thu Nov 1 17:52:17 EDT 2012
On Thu, Nov 1, 2012 at 3:38 PM, Andrea Crotti <andrea.crotti.0 at 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))
More information about the Python-list
mailing list