How to create a (transparent) decorator with status information?
Timo Schmiade
the_isz at gmx.de
Tue Apr 19 03:03:59 EDT 2011
Hey Ian,
On Mon, Apr 18, 2011 at 01:07:58PM -0600, Ian Kelly wrote:
> In the simple case, just store the state on the wrapper function itself:
>
> def call_counts(function):
> @functools.wraps(function)
> def wrapper(*args, **kwargs):
> wrapper.num_calls += 1
> return function(*args, **kwargs)
> wrapper.num_calls = 0
> return wrapper
Of course! Functions are first-class objects, so I can give them members
just as I would do with any other object. I'm still thinking too much
C++...
> If you want the state to be shared, you should probably store it in an
> object and use an instance method as the decorator:
Yes, this is the same idea that Wayne came up with. Thank you as well,
that helped me understand decorators a lot more.
Kind regards,
Timo
More information about the Python-list
mailing list