counted(func) so the decorated function carries its own call tally as an attribute: after three calls, f.calls == 3. Functions are objects — the wrapper can hang state directly on itself.f(); f(); f.calls
2
The attribute lives on the wrapper function object.
wrapper.calls = 0 after defining wrapper.
Increment inside before delegating.