Skip to content

Instantly share code, notes, and snippets.

@samvarankashyap
Created August 10, 2017 01:48
Show Gist options
  • Save samvarankashyap/6175eb880fcd02ee88171389d55c79bd to your computer and use it in GitHub Desktop.
Save samvarankashyap/6175eb880fcd02ee88171389d55c79bd to your computer and use it in GitHub Desktop.
Wrapper functions implementation in python
def wrap(pre, post):
def decorate(func):
def call(*args, **kwargs):
pre(func, *args, **kwargs)
result = func(*args, **kwargs)
post(func, *args, **kwargs)
return result
return call
return decorate
def trace_in(func, *args, **kwargs):
print args
print kwargs
print "Entering function", func.__name__
def trace_out(func, *args, **kwargs):
print args
print kwargs
print "Leaving function", func.__name__
class testclass:
def __init__(self):
pass
@wrap(trace_in, trace_out)
def calc(self, x, y):
return x + y
tc = testclass()
print tc.calc(1, 2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment