This Page

Quick search

Utilities to support special Python descriptors [1,2], in particular the use of
a useful pattern for properties we call ‘one time properties’. These are
object attributes which are declared as properties, but become regular
attributes once they’ve been read the first time. They can thus be evaluated
later in the object’s life cycle, but once evaluated they become normal, static
attributes with no function call overhead on access or any other constraints.

A special ResetMixin class is provided to add a .reset() method to users who
may want to have their objects capable of resetting these computed properties
to their ‘untriggered’ state.

By default, auto attributes once computed, become static. If they happen to
depend on other parts of an object and those parts change, their values may
now be invalid.

This class offers a .reset() method that users can call explicitly when
they know the state of their objects may have changed and they want to
ensure that all their special attributes should be invalidated. Once
reset() is called, all their auto attributes are reset to their
OneTimeProperty descriptors, and their accessor functions will be triggered
again.