スーパークラス初期化の引数の書き方に問題があります。 class App1
は、2つの他のクラスから継承する必要があります。ベースクラスのすべての引数をclass App1
に初期化しましたが、エラーが出ると、あまりにも多くの引数があると言います。なぜだろう?基本的には、基本クラスからのすべての引数をスーパー初期化に入れます。 3つのクラスは複数のウィンドウとして記述され、Button
はクラスが1つずつジャンプするように指示します。だから私はmain()
をmyApp = Welcome(root, csv_name_ses, csv_name_sub)
と呼ぶ。pythonスーパークラスの初期化引数
ありがとうございました!
class question(object): #first window
def __init__(self, algorithmIndex, initX, mid_loss_list = None, mid_gain_list = None):
self.initX = initX
self.algorithmIndex = algorithmIndex
self.mid_gain_list = question.mid_gain_list
self.mid_loss_list = question.mid_loss_list
...
class Welcome(object): #second window
def __init__(self, master, csv_name_ses, csv_name_sub):
self.master = master
Welcome.csv_name_sub = str(self.entrySub.get())
Welcome.csv_name_ses = str(self.entrySes.get())
...
class App1(Welcome, question): #third, last one appears
def __init__(self, master, csv_name_ses, csv_name_sub, algorithmIndex, initX, mid_loss_list, mid_gain_list):
super(App1, self).__init__(master, csv_name_ses, csv_name_sub, algorithmIndex, initX, mid_loss_list, mid_gain_list)
...
def main():
root = Tk()
myApp = Welcome(root, csv_name_ses, csv_name_sub)
root.mainloop()
エラーメッセージ:
super(App1, self).__init__(master, csv_name_ses, csv_name_sub, algorithmIndex, initX, mid_loss_list, mid_gain_list)
TypeError: __init__() takes 4 positional arguments but 8 were given