2012-11-07 68 views
1

我是python和dbus的新手,但是通過dbus-python有沒有數據綁定(=發送和接收的方式)?如何在python-dbus中將數據類型作爲數據類型處理

我的類看起來是這樣的:

class Item: 

    def __init__(self, one, two, three, four, five, *more): 
     self.one= one 
     self.two= two 
     self.three= three 
     self.four= four 
     self.five= five 
     self.more= more 

其中更多的是一個清單,一到五的字符串。我有這些項的列表:

list_items = [] 
list_items.append(Item('Test','Test','Test','Test',more)) 

的dbus的部分看起來像這樣:

@dbus.service.method('com.me.test', in_signature='', out_signature='a(sssssav)') 
def get_all_items(): 
    return list_items 

是否有我簽名的錯誤還是我必須使用不同的數據結構(元組?)哪些可以編組?

+0

您可能會發現[this](http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html#data-types)有幫助 – savruk

+0

@savruk:我讀了這個,因爲這個鏈接,我創建了out_signature。但我仍然有錯誤。也許我會把班級換成一份清單。 – powerbar

+0

在這種情況下,我會嘗試這樣做: 1-更改out_signature =「a {sav}」012 - 返回項目('Test','Test','Test','Test',更多).__ dict__而不是list_items – savruk

回答

0

您可以一直使用picklemarshal並將您的數據作爲例如一個字節串。 否則,您可以通過從dbus.service.Object繼承創建自己的DBus對象。我會去與前...

+0

要醃製課程,請將其作爲字節流發送,並再次取下它似乎是一個很好的解決方案......我會研究它! – powerbar

相關問題