У вас connect ничего не возвращает и поэтому после event += foo event становится равен None
Багфикс
class Event:
def __init__(self):
self.callbacks = set()
def connect(self, callback):
self.callbacks.add(callback)
return self
def disconnect(self, callback):
self.callbacks.remove(callback)
return self
def emit(self, *args, **kwargs):
for callback in self.callbacks:
callback(*args, **kwargs)
def clearCallbacks(self):
self.callbacks.clear()
__iadd__ = connect
__isub__ = disconnect
__call__ = emit
if __name__ == '__main__':
def foo():
print('foo')
event = Event()
event += foo
event()