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.