26 lines
541 B
Python
26 lines
541 B
Python
|
|
|
|
class Event:
|
|
|
|
def __init__(self):
|
|
self._callbacks = set()
|
|
|
|
def __iadd__(self, callback):
|
|
self.add_callback(callback)
|
|
|
|
return self
|
|
|
|
def __isub__(self, callback):
|
|
self.remove_callback(callback)
|
|
|
|
return self
|
|
|
|
def __call__(self, *args, **kwargs):
|
|
for callback in self._callbacks:
|
|
callback(*args, **kwargs)
|
|
|
|
def add_callback(self, callback):
|
|
self._callbacks.add(callback)
|
|
|
|
def remove_callback(self, callback):
|
|
self._callbacks.discard(callback)
|