Source code for chemicalchecker.util.decorator.property

"""Property decorators."""


[docs]class cached_property(object): """Decorator for lazily loading attributes. With this, the call to a class function becomes an attribute myobject.function and NOT myobject.function() The attribute is calculated when the function is called and stored as a property for later speedups. """ def __init__(self, func): self._attr_name = func.__name__ # grabs the name of the decorated func self._func = func def __get__(self, instance, owner): attr = self._func(instance) setattr(instance, self._attr_name, attr) return attr