Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class deferrable(object):
- def __init__(self, f):
- self.f = f
- self.deferred = None
- self.dargs = None
- self.dkwargs = None
- def register_defer(self, df, *args, **kwargs):
- self.deferred = df
- self.dargs = args
- self.dkwargs = kwargs
- def __call__(self, *fargs, **fkwargs):
- g = self.f.func_globals
- g['defer'] = self.register_defer
- self.f(*fargs, **fkwargs)
- if self.deferred:
- self.deferred(*self.dargs, **self.dkwargs)
- @deferrable
- def do_stuff(thing1, thing2):
- def exclaim(x):
- print "!!!", x, "!!!"
- defer(exclaim, 'done')
- print "One thing:", thing1
- print "And another:", thing2
- if __name__ == '__main__':
- do_stuff("foo", "bar")
- """
- Should print:
- One thing: foo
- And another: bar
- !!! done !!!
- Note that you need to do defer(function, arguments).
- Doing defer(function(arguments)) executes the function
- immediately. Not sure if this is preventable.
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement