Steven D'Aprano wrote: >> def _protector_decorator(fcn): >> def newfcn(self, *args, **kwargs): >> return fcn(self, *args, **kwargs) >> return newfcn > > Well, that surely isn't going to work, because it always decorates the > same function, the global "fcn".
Good grief, I can't believe I failed to see that fcn was declared as a parameter to _protector_decorator. > You probably want to add an extra parameter to the newfcn definition: > > def newfcn(self, fcn, *args, **kwargs): And that's also rubbish. The right place for the fcn parameter is the decorator function itself, exactly where it already is. Whatever crack I was smoking yesterday, it must have been pretty awful stuff. -- Steven -- http://mail.python.org/mailman/listinfo/python-list