围绕非pythonic类制作更加pythonic的包装

时间:2014-12-11 11:47:51

标签: python wrapper

我将在我的项目中使用名为socket.io-python-emitterhttps://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')

最好的方法是什么?

  • 围绕这个lib创建一个包装器?这样的接缝会很难看......
  • 分叉项目并创建一个" pythonic"版?更难看,重复..不要真的想这样做。
  • 提交补丁以向上游项目添加pythonic方式?

1 个答案:

答案 0 :(得分:0)

你的第三个选择似乎(对我而言)是好方法。我首先会与作者/维护者讨论他们对这个想法的看法。

由于你创建了一个新方法(并且无论如何都使用了关键字参数),两种语法都可以共存,所以我认为没有必要分叉项目或创建一个包装器。