from core.models.Event import Event class BaseObserver: def subscribe(self, topic, callback): callbacks = getattr(self, f'on_{topic}', None) if callbacks is None: return callbacks.append(callback) def notify(self, topic, subject = None, meta = None): callbacks = getattr(self, f'on_{topic}', None) if callbacks is None: return event = Event(subject, meta) for callback in callbacks: callback(event)