簡體   English   中英

為什么我收到錯誤:__init__() 缺少 1 個必需的位置參數?

[英]Why am I getting the error: __init__() missing 1 required positional argument?

Fedora 34,Python 3.9.5

我用一個繼承自其他兩個的類(其中一個繼承了 QWidget 功能)編寫了代碼。 結果,這個簡單的類沒有初始化。

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QWidget
 
class M_A(type(QWidget), type):pass
class A(QWidget, metaclass=M_A):
    def __init__(self):
        QWidget.__init__(self)
         
class B:
    def __init__(self, controller):
        self.controller = controller
         
         
class M_C(type(A), type(B)):pass
class C(A, B, metaclass=M_C):
    def __init__(self, controller):
        A.__init__(self)
        B.__init__(self, controller)
         
         
app = QtWidgets.QApplication([])
C(controller=19)


Traceback (most recent call last):
  File "/home/ivan/eclipse-workspace/123/Exp.py", line 22, in <module>
    C(controller=19)
  File "/home/ivan/eclipse-workspace/123/Exp.py", line 17, in __init__
    A.__init__(self)
  File "/home/ivan/eclipse-workspace/123/Exp.py", line 7, in __init__
    QWidget.__init__(self)
TypeError: __init__() missing 1 required positional argument: 'controller'

錯誤在哪里?

實現混合的官方示例中的文檔指出

這遵循與我們的 Person 實現類似的模式,但請注意我們為age 參數提供了一個默認值

(強調我的)

應用於您的案例控制器必須有一個默認值,例如 0:

class B:
    def __init__(self, controller=0):
        self.controller = controller

暫無
暫無

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

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