я собираюсь использовать библиотеку под названием socket.io-python-emitter
(https://github.com/ziyasal/socket.io-python-emitter) в моем проекте, однако синтаксис он вводит действительно беспокоит меня ..Создание более вещий обертку вокруг не-вещий класса
Пример использования:
e = Emitter(...)
e.Emit('message')
e.In('group1').Emit('message')
e.In('group1').In('group2').Emit('message')
e.Of("/ns").In('group1').In('group2').Emit('message')
Я предполагаю, что автор сделал это таким образом, так что JavaScript/node.js люди будут чувствовать себя как дома, но это действительно делает его труднее кодировать динамический излучатель ..
в конечном счете, это должно быть (по крайней мере, на мой взгляд):
e = Emitter(...)
e.emit('message')
e.emit('message', groups=['group1'])
e.emit('message', groups=['group1', 'group2'])
e.emit('message', groups=['group1', 'group2'], ns='/ns')
Каков наилучший подход?
- Создать обертку вокруг этой библиотеки? Такие швы были бы уродливыми ...
- Видеть проект и создать «питоническую» версию? Более уродливое и дублирование. Не хочу этого делать.
- Добавить патч, чтобы добавить pythonic путь к проекту вверх по течению?
Это довольно [маленький скрипт] (https://github.com/ziyasal/socket.io-python-emitter/blob/master/emitter/__init__.py), и большая часть кода выглядит как тонкая обертка вокруг 'redis.publish'. Я бы просто создал свой собственный класс, который обертывает redis и работает так, как я хочу. – georg
Плоский лучше, чем вложенный. –