【问题标题】:PyGObject, dbus python and metaclassesPyGObject、dbus python 和元类
【发布时间】:2019-01-28 16:46:09
【问题描述】:

我想继承两个 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 的元类吗?

【问题讨论】:

    标签: python dbus pygobject dbus-python


    【解决方案1】:

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

    现在是class Test(GObject.Object, dbus.service.Object, metaclass=M_Test):

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      相关资源
      最近更新 更多