Suppose I have
@someDecorator
def func():
'''this function does something'''
print 1
Now, the object func
is an instance of someDecorator
. Is there some way I can access the function it holds, i.e something like func.getInnerFunction()
.
For instance, if I need to retrieve the doc string of func()
.
See functools.wraps: http://docs.python.org/library/functools.html. The decorator gets the name and doc string of the original function. You use it like this:
Are you looking for something along these lines?
You're passing function explicitly to the decorator, of course you can access it.
You can attach the wrapped function to the inner function
SilentGhost and sri have partial answers for how to deal with this. But the general answer is no: there is no way to get the "wrapped" function out of a decorated function because there is no requirement that the decorator wrap the function in the first place. It may very well have returned an entirely unrelated function, and any references to your original may have already been garbage collected.
You can try using the undecorated library:
With your example
func
, you could simply do this to return the original function: