Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #32572

lazy properties?

Date 2012-11-01 21:38 +0000
From Andrea Crotti <andrea.crotti.0@gmail.com>
Subject lazy properties?
Newsgroups comp.lang.python
Message-ID <mailman.3165.1351806008.27098.python-list@python.org> (permalink)

Show all headers | View raw


Seeing the wonderful "lazy val" in Scala I thought that I should try to 
get the following also in Python.
The problem is that I often have this pattern in my code:

class Sample:
     def __init__(self):
         self._var = None

     @property
     def var(self):
         if self._var is None:
             self._var = long_computation()
         else:
             return self._var


which is quite useful when you have some expensive attribute to compute 
that is not going to change.
I was trying to generalize it in a @lazy_property but my attempts so far 
failed, any help on how I could do that?

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..

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

lazy properties? Andrea Crotti <andrea.crotti.0@gmail.com> - 2012-11-01 21:38 +0000

csiph-web