class Event: def __init__(self): self._subscribers = [] def sub(self, callback): """Subscribe a callback to the event.""" if callback not in self._subscribers: self._subscribers.append(callback) def unsub(self, callback): """Unsubscribe a callback from the event.""" if callback in self._subscribers: self._subscribers.remove(callback) def invoke(self, *args, **kwargs): """Invoke all subscribers with the given arguments.""" for callback in self._subscribers: callback(*args, **kwargs)