设计Python API:Fluent接口或参数

2024-05-15 01:13:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python的ProtovisAPI的一个简单端口。

以Javascript中的简单条形图为例:

var vis = new pv.Panel()
    .width(150)
    .height(150);

vis.add(pv.Bar)
    .data([1, 1.2, 1.7, 1.5, .7, .3])
    .width(20)
    .height(function(d) d * 80)
    .bottom(0)
    .left(function() this.index * 25);

vis.render();

我正在讨论是继续使用这个流畅的接口风格的API还是使用命名参数。使用命名参数,我们可以编写:

vis = pv.Panel(width=150,
               height=150)

vis = vis + pv.Bar(data=[1, 1.2],
                   width=20,
                   height=lambda d: d * 80,
                   bottom=0,
                   left=lambda: self.index * 25)
vis.render()

有首选的Python风格吗?


Tags: data参数index风格barfunctionrenderwidth
1条回答
网友
1楼 · 发布于 2024-05-15 01:13:50

我的投票是反链锁,亲命名的params。

  1. 点链接会导致代码的智能性较差,因为经验原型只是一个空的Panel()或Bar(),您当然可以在上面使用pydoc,但在当今时代,智能性在大多数ide中都是可用的,并且是一个很好的生产力提升器。

  2. 链接使得编程调用类更加困难。能够以*args,**kwargs的形式传入列表或dict是非常好的——虽然可以使用链式链接,但基本上必须同时支持这两种方法或一堆backflip才能meta创建类。

  3. 链接使代码更难阅读,因为不可避免地会有人在一行中完成所有的操作,并且想知道当它们在同一个参数中传递两次时,为什么所有的东西都会出错——您可以防止这种情况,但是使用命名的param构造函数dup filtering基本上是内置的。

相关问题 更多 >

    热门问题