Pydbus中不同数量的参数

Posted

技术标签:

【中文标题】Pydbus中不同数量的参数【英文标题】:Varying amount of Arguments in Pydbus 【发布时间】:2019-06-17 00:19:42 【问题描述】:

我现在设置了一个 Pydbus 服务器并导出了一些方法,但是一种方法让我一直在猜测。此方法中使用的参数数量正在发生变化。在 Python 中,这只需使用 MyMethod(*arg, **kwarg) 即可完成。如果我将此函数写入我的 XML 接口,我必须定义参数的确切数量。

有没有办法不指定参数的确切数量?这样我理论上可以在第一次使用时使用一个参数,第二次使用无限参数?

感谢您的帮助, 多米尼克

【问题讨论】:

【参考方案1】:

如果您提供代码示例(来自自省 XML)来说明问题,具体回答这个问题会容易得多。

我猜你希望MyMethod 是多态的。这不是 D-Bus type system 默认的特性(所有参数列表都必须具体输入)。

不过,您可以使用asv 类型的单个参数(即MyMethod (asv args))自行实现。 D-Bus 类型asv 是变量值的字符串键字典,可以包含零个或多个这样的对。您可以使用它来允许将可变数量的有据可查的参数键/值对传递给您的方法。

您可能想阅读D-Bus API design guidelines 以获取有关如何设计良好 D-Bus API 的更多提示。

【讨论】:

以上是关于Pydbus中不同数量的参数的主要内容,如果未能解决你的问题,请参考以下文章

根据函数中的参数数量返回不同的值[重复]

映射到具有不同数量参数和不同数据类型的函数指针

如何在java中动态实例化具有不同数量参数的java类?

如何在R中的函数中有不同数量的具有默认值的参数?

调用具有不同数量参数的 cdecl 函数

Javascript未知数量的参数