【发布时间】:2014-12-11 11:47:50
【问题描述】:
我将在我的项目中使用一个名为 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')
最好的方法是什么?
- 围绕这个库创建一个包装器?这样的接缝会很丑……
- fork 项目并创建“pythonic”版本?更丑陋,和重复.. 真的不想这样做。
- 提交补丁以向上游项目添加pythonic方式?
【问题讨论】:
-
这是一个相当 small script 的代码,并且大部分代码看起来像是对
redis.publish的薄包装。我只需创建自己的类来包装 redis 并按照我想要的方式工作。 -
平面比嵌套好。