Lazily-evaluated Property Pattern in Python
Lazy evaluation is a useful pattern that can improve your code's efficiency in many situations.
One example of this is instance attributes that take long to compute:
This approach may cause initialization to take unnecessarily long, especially when you don't always need to access
A better strategy would be to get
relatives only when it's needed (i.e., "lazily"):
In this case, the list of relatives is only computed the first time
Person#relatives is accessed. After
that, it's stored in
Person#_relatives to prevent repeated evaluations.
A perhaps more Pythonic approach would be to use a decorator that makes a property lazy-evaluated
This removes a lot of boilerplate, especially when an object has many lazily-evaluated properties.
Please send comments by email. I welcome your feedback, advice, and criticism.