Hey Wayne,

On Mon, Apr 18, 2011 at 04:04:15PM -0700, Wayne Witzel III wrote:
> Going with the object approach, you could use Borg to give yourself the state 
> between instances you mentioned. And since you are using an object, you'll 
> have access to the data without needing to return it from the decorator.
> 
> class StatefulDecorators(object):
>     _state = {}
>     def __new__(cls, *p, **k):
>         self = object.__new__(cls, *p, **k)
>         self.__dict__ = cls._state
>         return self
>             
>     def count_calls(self, function):
>         @functools.wraps(function)
>         def wrapper(*args, **kwargs):
>             try:
>                 self.calls += 1
>             except AttributeError:
>                 self.calls = 1
>             return function(*args, **kwargs)
>         return wrapper

Brilliant! I didn't realize you could use member functions as
decorators, too! That way, you can easily create closures to self,
solving all the problems I was seeing.

Just one question remains now: What is a "Borg" in this context?

Thank you.

Timo
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to