亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從兩個元類派生時在 __init__ 中鍵入錯誤

從兩個元類派生時在 __init__ 中鍵入錯誤

呼喚遠方 2021-07-22 18:12:40
我想創建派生自 PyQt5QtWidget.QWidget和abc.ABCMeta. 這兩個類都有自己的元類作為類型,因此,根據this page和this SO question,我需要創建自己的元類,該元類派生自QWidgetand的元類abc.ABCMeta,并明確地將其用作我的類的元類。到目前為止QtAbcMeta一切順利,我已經定義了一個類并將其用作metaclass我的ConcreteWidget類(見下文)。import abcfrom PyQt5 import QtWidgets, QtCoreclass AbstractClass(metaclass=abc.ABCMeta):    def __init__(self, name):        self._name = name    @abc.abstractmethod    def myMethod():        passclass QtAbcMeta(type(QtWidgets.QWidget), type(AbstractClass)):    passclass ConcreteWidget(QtWidgets.QWidget, AbstractClass, metaclass=QtAbcMeta):    def __init__(self, name, parent=None):        AbstractClass.__init__(self, name)        QtWidgets.QWidget.__init__(self, parent=parent)  # This gives a type error.    def myMethod():        print("My widget does something")def main():    app = QtWidgets.QApplication([])    myWidget = ConcreteWidget('my name', parent=None)if __name__ == "__main__":    main()但是,當我嘗試調用該__init__方法的QtWidgets.QWidget方法來設置父級時,我得到以下類型錯誤:Traceback (most recent call last):  File "main.py", line 36, in <module>    main()  File "main.py", line 33, in main    myWidget = ConcreteWidget('my name', parent=None)  File "main.py", line 24, in __init__    QtWidgets.QWidget.__init__(self, parent=parent)  # This gives a type error.TypeError: __init__() missing 1 required positional argument: 'name'我不知道這里出了什么問題。的簽名QtWidgets.QWidget.__init__不知何故改變了?任何幫助,將不勝感激。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號