Упакуйте GLib. Вариант в Python - PullRequest
0 голосов
/ 05 августа 2020

API PyGObject позволяет преобразовать вариант GLib в объект Python с помощью метода unpack() (см. GLib.Variant.unpack ).

Однако существует ли прямой способ сделать обратное?

Например, я могу создавать произвольные объекты GLib Variant с помощью конструкторов Variant:

>>> myglibvariant = GLib.Variant("a{sv}", { 'test': GLib.Variant('s', 'value')})

И использовать функцию unpack() для создания объекта Python в один шаг:

>>> myglibvariant.unpack()
{'test': 'value'}

Однако есть ли способ сделать обратное за один шаг? Например,

>>> myglibvariant = GLib.Variant.pack({'test': 'value'})

1 Ответ

1 голос
/ 05 августа 2020

Нет, потому что нужно указать тип. (В примере {'test': 'value'} функция pack должна угадать тип a{ss} или a{sv}, или, возможно, {ss} или {sv}.

...