Найти - Пользователи
Полная версия: vanished
Начало » Python для экспертов » vanished
1
tz4678@gmail.com
vanished
terabayt
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()
tz4678@gmail.com
vanished
terabayt
tz4678@gmail.com и?
Suguby27
У вас 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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB