Mikael Olofsson wrote: > Duncan Booth wrote: > >> The __get__ method should be returning a new object, NOT modifying the >> state of the decorator. As written it will break badly and unexpectedly >> in a variety of situations: >> >> [snip good examples of things going bad] > > Ouch! So, does that mean that George's solution based on a function is > the way to go, or does that mean that my __call__ should analyze the > passed callable?
I usually use decorator functions, but I think the following should work, too: class deco(object): def __init__(self, func): self._func = func def __call__(self, *args): print "Decorator:", args self._func(*args) def __get__(self, *args): return deco(self._func.__get__(*args)) Peter -- http://mail.python.org/mailman/listinfo/python-list