bundles / astropy 7.0.1 / astropy / utils / decorators / lazyproperty
class
astropy.utils.decorators:lazyproperty
source: /astropy/utils/decorators.py :802
Signature
class lazyproperty ( fget , fset = None , fdel = None , doc = None ) Members
Summary
Works similarly to property(), but computes the value only once.
Extended Summary
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: ... @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.
By default, a setter and deleter are used which simply overwrite and delete, respectively, the value stored in __dict__. Any user-specified setter or deleter is executed before executing these default actions. The one exception is that the default setter is not run if the user setter already sets the new value in __dict__ and returns that value and the returned value is not None.
Aliases
-
astropy.utils.lazyproperty