This would benefit from a doctest-like example. It took me a minute to figure out what it did.

Also, I'd be… -0… on calling it "memoized", as that's not so clear what that means in the case of a `@property`. I would be +0 on calling it `cached_property`.