From what I can tell, this `cache` is lost between calls, because you don't actually set `_cache` to the created `{}`. `getattr` does not do any such magic with this third arg.

Also, I am strongly against hiding data in other people's objects. The usual solution is to either do what I did in my version of `memoize`, or to create a callable `Memoize` class which can be used as a decorator, and maintains a `self.cache`.

So, then the question becomes, why are we forcing ourselves to use this `@decorator` decorator for situations that it's not meant to handle?