spacepaste

  1.  
  2. class Event:
  3. def __init__(self):
  4. self.handlers = set()
  5. def handle(self, handler):
  6. self.handlers.add(handler)
  7. return self
  8. def unhandle(self, handler):
  9. try:
  10. self.handlers.remove(handler)
  11. except:
  12. raise ValueError("Handler is not handling this event, so cannot unhandle it.")
  13. return self
  14. def fire(self, *args, **kargs):
  15. for handler in self.handlers:
  16. handler(*args, **kargs)
  17. def getHandlerCount(self):
  18. return len(self.handlers)
  19. __iadd__ = handle
  20. __isub__ = unhandle
  21. __call__ = fire
  22. __len__ = getHandlerCount
  23.