为啥我收到错误:__init__() 缺少 1 个必需的位置参数?
Posted
技术标签:
【中文标题】为啥我收到错误:__init__() 缺少 1 个必需的位置参数?【英文标题】:Why am I getting the error: __init__() missing 1 required positional argument?为什么我收到错误:__init__() 缺少 1 个必需的位置参数? 【发布时间】:2021-09-02 03:59:27 【问题描述】: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'
错在哪里?
【问题讨论】:
在 SOLVED 未添加到帖子标题中,请查看tour 以便您知道该怎么做。 为什么要创建这些元类?无论如何都不需要它们。 【参考方案1】:官方实现混合示例中的docs指出
这遵循与我们的 Person 实现类似的模式,但请注意我们为 age 参数提供了默认值。
(强调我的)
应用于你的case控制器必须有一个默认值,例如0:
class B:
def __init__(self, controller=0):
self.controller = controller
【讨论】:
以上是关于为啥我收到错误:__init__() 缺少 1 个必需的位置参数?的主要内容,如果未能解决你的问题,请参考以下文章
错误:__ init __()缺少1个必需的位置参数:'rec'
如何修复modelformset错误:__init __()缺少1个必需的位置参数:'user'
类型错误:__init__() 缺少 2 个必需的位置参数:“arr”和“n”