Различное количество аргументов в Pydbus - PullRequest
0 голосов
/ 23 января 2019

Я сейчас настроил сервер Pydbus и экспортировал несколько методов, но один метод заставляет меня догадываться.Количество аргументов, используемых в этом методе, меняется.В Python это просто делается с помощью MyMethod (* arg, ** kwarg).Если я напишу эту функцию в своем XML-интерфейсе, я должен определить точное количество аргументов.

Есть ли способ не указать точное количество аргументов?Чтобы я теоретически мог использовать один аргумент при первом использовании и неограниченное количество аргументов во второй раз?

Спасибо за вашу помощь, Доминик

1 Ответ

0 голосов
/ 23 января 2019

Было бы намного проще конкретно ответить на этот вопрос, если бы вы предоставили примеры кода (из самоанализ XML), чтобы проиллюстрировать проблему.

Я собираюсь догадаться, что вы хотите, чтобы MyMethod был полиморфным. Это не является функцией системы типов D-Bus по умолчанию (все списки аргументов должны быть конкретно набраны).

Вы можете реализовать это самостоятельно, используя один аргумент типа a{sv}, т.е. MyMethod (a{sv} args). Тип D-Bus a{sv} представляет собой словарь строковых ключей для вариантов значений и может содержать ноль или более таких пар. Вы можете использовать его, чтобы разрешить переменное число хорошо документированных пар ключ / значение аргумента в ваш метод.

Возможно, вы захотите прочитать Рекомендации по проектированию D-Bus API для получения дополнительных советов о том, как разрабатывать хорошие API D-Bus.

...