如何在 python-dbus 中将类作为数据类型处理

Posted

技术标签:

【中文标题】如何在 python-dbus 中将类作为数据类型处理【英文标题】:How to handle classes as datatype in python-dbus 【发布时间】:2012-10-27 08:33:27 【问题描述】:

我是 python 和 dbus 的新手,但是否有通过 dbus-python 的数据绑定(= 一种发送和接收方式)python 类?

我的班级是这样的:

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

其中 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

我的签名是否有错误,或者我必须使用可以编组的不同数据结构(元组?)?

【问题讨论】:

您可能会发现this 很有帮助 @savruk:我读了这篇文章,并且因为这个链接,我创建了那个 out_signature。但我仍然得到错误。也许我会用列表交换课程。 在这种情况下,我会试试这个: 1- 更改 out_signature="asav" 2- 返回项目('Test','Test','Test','Test',more) .__dict__ 而不是 list_items 【参考方案1】:

您始终可以使用 picklemarshal 并将您的数据发送为例如一个字节串。 否则,您可以通过从dbus.service.Object 继承来创建自己的 DBus 对象。我会选择前者...

【讨论】:

要腌制课程,将其作为字节流发送并再次取消腌制似乎是一个很好的解决方案......我会研究一下!

以上是关于如何在 python-dbus 中将类作为数据类型处理的主要内容,如果未能解决你的问题,请参考以下文章

在 Postman 中将类对象作为参数传递

如何在 Java 中将类型作为方法参数传递

如何在数据块中将数据框作为笔记本参数传递?

如何在猫鼬中将 ObjectId 设置为数据类型

如何在Java中将类作为参数传递?

如何在类中将函数作为参数传递?