簡體   English   中英

PyGObject,dbus python和元類

[英]PyGObject, dbus python and metaclasses

我想子類化兩個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元類嗎?

Python3更改了指定元類的語法。 PEP-3115

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM