raspberry pi zero based drum machine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

observer.py 948B

123456789101112131415161718192021222324
  1. class Subscriber:
  2. def __init__(self, name):
  3. self.name = name
  4. def update(self, message):
  5. #print('{} got message "{}"'.format(self.name, message))
  6. pass
  7. class Publisher:
  8. def __init__(self, events):
  9. self.subscribers = { event : dict()
  10. for event in events }
  11. def get_subscribers(self, event):
  12. return self.subscribers[event]
  13. def register(self, event, who, callback=None):
  14. if callback is None:
  15. callback = getattr(who, 'ReceiveMessage')
  16. self.get_subscribers(event)[who] = callback
  17. def unregister(self, event, who):
  18. del self.get_subscribers(event)[who]
  19. def dispatch(self, event, message):
  20. #print('dispatch', self.get_subscribers(event).items())
  21. for subscriber, callback in self.get_subscribers(event).items():
  22. callback(message)