如何在后续参数中引用函数调用的先前参数?

时间:2018-07-22 20:56:37

标签: python micropython

这是在micropython中

我正在创建一个API以控制某些硬件。该API将在C中通过micropython中的接口实现。

我的API的一个示例是:

device.set(curr_chan.BipolarRange, curr_chan.BipolarRange.state.ON)

我希望能够实现相同的功能,但通过某种方式隐式引用第一个参数来缩短第二条路径:

device.set(curr_chan.BipolarRange, <first arg?>.state.ON)

反正有这样做吗?

现在要做 这样的唯一方法就是

device.set(curr_chan.BipolarRange.state.ON)

然后在ON C对象和state C对象上都放置一个指向上方的C指针,这样我就知道curr_chan中的哪个条目被引用了。

micropython运行时-我假设是CPython一次-不会将整个对象“树”保留给开发人员在内存中。

2 个答案:

答案 0 :(得分:1)

对于第二个(状态)参数,您可以具有特殊的值,该值告诉函数实现从第一个参数导出状态。您还可以引入一个完全独立的函数来实现此功能。

或者您可以具有帮助程序功能,该功能确定状态并将其传递给set函数,如下所示:

device.set(*state_ON(curr_chan.BipolarRange))

在这里,state_ON将返回一个元组(curr_chan.BipolarRange, curr_chan.BipolarRange.state.ON)

在任何情况下,都无法直接支持您要在Python本身中尝试执行的操作。

答案 1 :(得分:1)

将所需属性的名称用作第二个参数。反复调用getattr(或PObject_GetAttr,以获取由func myfunc 分隔的字符串的每个元素:

myfunc