错误 - __init __()需要2个参数(给定1个)

时间:2013-04-15 20:28:31

标签: python

我正在尝试从另一个.py初始化类(extraropt)但是它给了我一个错误,我已经搜索但是我还没有找到解决方案。

下面是我正在调用的一个py的代码:

main.py:

class GameWindow(ui.ScriptWindow):
    def __init__(self, stream):
        import extraop

        exec 'extraop.extraropt().Show(stream)'

这是我试图调用的一个py的代码(仅限init和del):

extraop.py

class extraropt(ui.Window):
    def __init__(self, stream):
        ui.Window.__init__(self)
        self.BuildWindow()
        self.stream=stream
    def __del__(self):
        ui.Window.__del__(self)

它给出了这个错误:

Error - __init__() takes exactly 2 arguments (1 given)

3 个答案:

答案 0 :(得分:5)

在第

exec 'extraop.extraropt().Show(stream)'

您通过创建extraropt.__init__()的新实例隐式调用extraopt。在您的代码中,您显示extraropt.__init__()需要第二个(stream)参数,因此您必须将其传递。

extraop.extraropt(stream).Show()

顺便说一句,没有理由你应该做exec而不是像我上面那样明确地调用它。您也没有理由定义__del__()方法,因为您只需要调用父__del__()方法。

答案 1 :(得分:4)

您需要以这种方式初始化父级:

super(extraropt, self).__init__(stream)

答案 2 :(得分:3)

stream中的exec 'extraop.extraropt().Show(stream)'变量应该传递到extraropt类的构造函数中,如下所示:

exec 'extraop.extraropt(stream).Show()'