Hmm... the way I've re-implemented it still uses a closure, which doesn't give access to `hits` and `misses`... The issue with the callable class is that you have to apply it like so:
```
@memoize()
def myfunc():
   return 1
```
instead of just `@memoize`. I can do it the callable class way, but I'm not sure it's worth it given that many will accidentally do `@memoize` and get a confusing error. I could modify a dict with hits and misses within the decorated functions here though, if that's preferable.