Bases: object
Works similarly to property(), but computes the value only once.
This essentially memorizes the value of the property by storing the result of its computation in the __dict__ of the object instance. This is useful for computing the value of some property that should otherwise be invariant. For example:
>>> class LazyTest(object):
... @lazyproperty
... def complicated_property(self):
... print('Computing the value for complicated_property...')
... return 42
...
>>> lt = LazyTest()
>>> lt.complicated_property
Computing the value for complicated_property...
42
>>> lt.complicated_property
42
As the example shows, the second time complicated_property is accessed, the print statement is not executed. Only the return value from the first access off complicated_property is returned.
If a setter for this property is defined, it will still be possible to manually update the value of the property, if that capability is desired.
Adapted from the recipe at http://code.activestate.com/recipes/363602-lazy-property-evaluation
Methods Summary
deleter(fdel) | |
getter(fget) | |
setter(fset) |
Methods Documentation