example in use
def fun(x,y):
def adder():
return x+y
return adder
def fun1(n):
a = range(n)
def get_item():
return a.pop()
return get_item
class Engine(object):
def __init__(self):
self.callbacks = []
def pump(self):
for callback in self.callbacks :
callback()
def fun(self,n):
def action():
print "action %d" % (n)
def stop():
self.callbacks.remove(action)
self.callbacks.append(action)
return stop
e = Engine()
s1 = e.fun(10)
s2 = e.fun(100)
print "pump"
e.pump()
s1()
print "pump"
e.pump()
s2()
print "pump"
e.pump()
fun1 and fun2 are just examples not demoed
for last one engine is demoed
output is
pump
action 10
action 100
pump
action 100
pump