我正在尝试从另一个.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)
答案 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()'