I want to subclass two python classes: one from PyGObject and one from python3-dbus:
import gi
from gi.repository import GObject
import dbus.service
class Test(GObject.Object, dbus.service.Object):
pass
However I'm receiving following error:
$ 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
I've already find out that it is because GObject.Object and dbus.service.Object have different metaclasses, and I need to do subclass them too:
class M_Test(gi.types.GObjectMeta, dbus.service.InterfaceType):
pass
class Test(GObject.Object, dbus.service.Object):
__metaclass__=M_Test
pass
However it doesn't help, I continue to receive the same error. Maybe gi.types.GObjectMeta and dbus.service.InterfaceType is not correct metaclasses for GObject.Object and dbus.service.Object. Does anybody know how to do merge metaclasses of GObject.Object and dbus.service.Object?
Python3 changed syntax of specifying metaclasses. PEP-3115
It's
class Test(GObject.Object, dbus.service.Object, metaclass=M_Test):now.