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