gpt4 book ai didi

python - 设计 Python API : Fluent interface or arguments

转载 作者:IT老高 更新时间:2023-10-28 20:34:28 25 4
gpt4 key购买 nike

我正在玩Protovis 的一个简单端口到 Python 的 API。

考虑简单的条形图示例,在 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 风格吗?

最佳答案

我的投票是反链接,支持命名参数。

  1. 点链会导致代码智能感知不佳,因为经验原型(prototype)只是一个空的 Panel() 或 Bar(),你当然可以在其上使用 pydoc,但在当今时代,智能感知在大多数情况下都可用IDE 和强大的生产力助推器。

  2. 链接使得以编程方式调用类变得更加困难。能够将列表或字典作为 *args、**kwargs 传递是非常好的——虽然可以使用链接,但您基本上必须支持这两种方法或一堆后空翻来元创建类。

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

关于python - 设计 Python API : Fluent interface or arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com