No, it's still `@memoize`, because it operates in the same way as decorating a function (Python makes no distinction). `__init__` takes the decorated `func`, the returned object becomes the decorated function, and then calling that function invokes `__call__`.