这是在 micropython 中
我正在创建一个 API 来控制某些硬件。该 API 将使用 C 语言实现,并使用 micropython 中的接口(interface)。
我的 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 运行时)不会将整个对象“树”保留在内存中供开发人员使用。
最佳答案
您可以为第二个(状态)参数指定特殊值,告诉函数实现从第一个参数导出状态。您还可以引入一个具有此行为的完全独立的函数。
或者您可以有一个辅助函数来确定状态并将其传递给 set
函数,如下所示:
device.set(*state_ON(curr_chan.BipolarRange))
这里,state_ON
将返回一个元组(curr_chan.BipolarRange, curr_chan.BipolarRange.state.ON)
。
无论如何,Python 本身并没有直接支持你想要做的事情。
关于python - 如何在后面的参数中引用函数调用的前面的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469178/