lsst.utils.classes.cached_getter(func: Callable[[_S], _R]) → Callable[[_S], _R]

Decorate a method to cache the result.

Only works on methods that take only self as an argument, and returns the cached result on subsequent calls.


This is intended primarily as a stopgap for Python 3.8’s more sophisticated functools.cached_property, but it is also explicitly compatible with the immutable decorator, which may not be true of cached_property.

cached_getter guarantees that the cached value will be stored in an attribute named _cached_{name-of-decorated-function}. Classes that use cached_getter are responsible for guaranteeing that this name is not otherwise used, and is included if __slots__ is defined.