PyGObject、dbus python和元类

2024-03-28 14:41:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将两个python类划分为子类:一个来自PyGObject,另一个来自python3 dbus:

import gi
from gi.repository import GObject
import dbus.service

class Test(GObject.Object, dbus.service.Object):
    pass

但是,我收到以下错误:

$ python3 test.py
Traceback (most recent call last):
    File ".../test.py", line 5, in <module>
       class Test(GObject.Object, dbus.service.Object):
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

我已经发现这是因为GObject.Objectdbus.service.Object有不同的元类,我也需要对它们进行子类化:

class M_Test(gi.types.GObjectMeta, dbus.service.InterfaceType):
    pass

class Test(GObject.Object, dbus.service.Object):
    __metaclass__=M_Test
    pass

然而,这没有帮助,我继续收到相同的错误。可能gi.types.GObjectMetadbus.service.InterfaceType不是GObject.Objectdbus.service.Object的正确元类。有人知道如何合并GObject.Objectdbus.service.Object的元类吗?你知道吗


Tags: ofpytestimportobject错误servicepass
1条回答
网友
1楼 · 发布于 2024-03-28 14:41:45

Python3改变了指定元类的语法。PEP-3115

现在是class Test(GObject.Object, dbus.service.Object, metaclass=M_Test):。你知道吗

相关问题 更多 >