27 lines
622 B
Python
27 lines
622 B
Python
# -*- mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*-
|
|
|
|
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)
|