6

私は dbus-python で遊んでおり、ネイティブの Python タイプとして応答 (fe dbus.Dictionary - ただし、通常は任意の応答) を取得する必要があります。はい、再帰コンバーターを書くことはできますが、明らかな何かを見逃していたに違いないと思いますか? dbus を使用してこれらの怪物を Python ネイティブ型に変換する方法が必要です。それともそうではありませんか?

dbus.Dictionary({dbus.String(u'CanGoNext'): dbus.Boolean(True, variant_level=1), dbus.String(u'CanPause'): dbus.String(u'MinimumRate'): dbus.Int32(14, variant_level=1) ...
4

3 に答える 3

1

あなたはする必要はありません。これらはネイティブタイプのサブクラスであるため、ネイティブタイプであるかのように使用します。

>>> import dbus
>>> v = dbus.Dictionary({dbus.String(u'CanGoNext'): dbus.Boolean(True, variant_level=1), dbus.String(u'CanPause'): dbus.Boolean(False, variant_level=1), dbus.String(u'MinimumRate'): dbus.Int32(14, variant_level=1)})
>>> print v['MinimumRate']
14
>>> if v['CanGoNext']: print 'Go'
... 
Go
>>> if v['CanPause']: print 'Pause'
... 
>>> 
于 2012-09-27T15:27:16.600 に答える
1

@Martin Vidnerが言ったように、コードではそれらを使用するために何もする必要はありません。

きれいに印刷するには、次のような既存の「再帰コンバーター」を使用できますjson

import json
print(json.dumps(d, indent=2))

出力

{
  "MinimumRate": 14, 
  "CanGoNext": 1, 
  "CanPause": 0
}

型に関する情報が失われます。

于 2012-09-27T15:45:53.877 に答える