Форум сайта python.su
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:23)
Офлайн
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) 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()
Офлайн
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:25)
Офлайн
Офлайн
У вас 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()
Офлайн