我现在设置了一个 Pydbus 服务器并导出了一些方法,但一种方法让我一直在猜测。此方法中使用的参数数量正在发生变化。在 Python 中,这只需使用 MyMethod(*arg, **kwarg) 即可完成。如果我将此函数写入我的 XML 接口,我必须定义参数的确切数量。
有没有办法不指定参数的确切数量?这样我理论上可以在第一次使用时使用一个参数,第二次使用无限参数?
谢谢你的帮助,多米尼克
我现在设置了一个 Pydbus 服务器并导出了一些方法,但一种方法让我一直在猜测。此方法中使用的参数数量正在发生变化。在 Python 中,这只需使用 MyMethod(*arg, **kwarg) 即可完成。如果我将此函数写入我的 XML 接口,我必须定义参数的确切数量。
有没有办法不指定参数的确切数量?这样我理论上可以在第一次使用时使用一个参数,第二次使用无限参数?
谢谢你的帮助,多米尼克
如果您提供代码示例(来自自省 XML)来说明问题,那么具体回答这个问题会容易得多。
我猜你想要MyMethod
多态。默认情况下,这不是D-Bus 类型系统的特性(所有参数列表都必须具体键入)。
不过,您可以自己实现这一点,使用 type 的单个参数a{sv}
,即MyMethod (a{sv} args)
. D-Bus 类型a{sv}
是变量值的字符串键字典,可以包含零个或多个这样的对。您可以使用它来允许将可变数量的有据可查的参数键/值对传递给您的方法。
您可能想阅读D-Bus API 设计指南,以获取有关如何设计好的 D-Bus API 的更多提示。