Pydbus中不同的参数数量

时间:2019-01-23 11:56:39

标签: python-3.x interface dbus gdbus

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

有什么方法可以不指定确切数量的参数?这样我就可以在理论上第一次使用一个参数而第二次使用无限制的参数?

感谢您的帮助, 多米尼克

1 个答案:

答案 0 :(得分:0)

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

我猜您希望MyMethod是多态的。默认情况下,这不是D-Bus type system的功能(所有参数列表都必须具体键入)。

不过,您可以使用类型a{sv}(即MyMethod (a{sv} args))的单个参数自己实现此目的。 D-Bus类型a{sv}是一个字符串键字典,用于表示变量值,并且可以包含零个或多个这样的对。您可以使用它来将可变数量的,有据可查的参数键/值对传递给您的方法。

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