Steven D'Aprano wrote: > Suppose I have a function f() which I know has been decorated, but I don't > have access to the original undecorated function any longer: > > def reverse(func): > def f(*args): > args = list(args) > args.reverse() > return func(*args) > return f > > def say(*args): > print args > > rsay = reverse(say) > del say > > > Is there any way to peek inside the decorated function rsay() to get > access to the undecorated function say()?
Here's a hack for Python 2.4: def make_extractor(x=None): def extractor(): return x return extractor extractor = make_extractor() function = type(extractor) def get_cell_contents(cell): return function(extractor.func_code, {}, "yadda", None, (cell,))() get_cell_contents(rsay.func_closure[0])(1,2,3) Peter -- http://mail.python.org/mailman/listinfo/python-list