3

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

这是我调用的一个 py 的代码:

主要.py:

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

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

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

外部操作.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)
4

3 回答 3

5

在行

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

extraropt.__init__()通过创建extraopt. 在您的代码中,您表明extraropt.__init__()需要第二个 ( stream) 参数,因此您必须将其传入。

extraop.extraropt(stream).Show()

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

于 2013-04-15T20:33:41.283 回答
4

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

super(extraropt, self).__init__(stream)
于 2013-04-15T20:31:03.897 回答
3

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

exec 'extraop.extraropt(stream).Show()'
于 2013-04-15T20:31:18.217 回答