Pybites Logo

Cached property decorator

Level: Advanced (score: 4)

Given the sample class Planet, computing the mass attribute of an instance is a computationally expensive and time consuming operation. Ideally you'd like this attribute to be a cached_property that only gets computed once and is then stored for future access, not having to be recalculated over (and over and over).


Tasks

Complete cached_property(func) as a decorator function, so that asking "What was the mass of Planet('red') again?" is consistent and quick.

Note: Attempting to set mass should raise AttributeError as it is read-only.

Hint: replace the @property decorator with your implementation of @cached_property and remove the mass setter entirely, attempting to set mass should raise AttributeError as it is read-only.