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

Reply via email to