Shrutarshi Basu wrote: > The event handling approach looks interesting and isn't something that > I haven't encountered before. Could you to point me somewhere I could > learn more about it?
Not really...this is commonly used by GUI frameworks. For example in Tkinter you can register a mouse-button callback on a widget by calling widget.bind('<Button-1>', callback) where callback is the event handler. http://www.pythonware.com/library/tkinter/introduction/events-and-bindings.htm In your case, you would define the possible events and make a registry. For example, the registry could be a dict mapping event name to a list of handlers: from collections import defaultdict event_registry = defaultdict(list) def register(event, handler): # Should check that event is a real event name event_registry[event].append(handler) A client might call register('sensor_front', handle_sensor_front) Then in your main loop you check for the various events and call the callbacks. Perhaps you have a dict mapping event names to functions that query a condition: events = dict(sensor_front = lambda: robot.sensor('front') for event, query in events.items(): if query(): for handler in event_registry[event]: handler() This is simplistic - it needs error handling, a way to remove event handlers and probably much more - but perhaps it will give you enough to evaluate the idea. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor