Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 24, 2015 17:31:32

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 71
Репутация: +  -2  -
Профиль   Отправить e-mail  

vanished

vanished

Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:23)

Офлайн

#2 Апрель 24, 2015 18:45:01

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

vanished

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()



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Апрель 24, 2015 20:36:18

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 71
Репутация: +  -2  -
Профиль   Отправить e-mail  

vanished

vanished

Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:25)

Офлайн

#4 Апрель 24, 2015 20:58:25

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

vanished

tz4678@gmail.com и?



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Апрель 27, 2015 12:33:20

Suguby27
Зарегистрирован: 2015-04-07
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

vanished

У вас 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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version