AttributeError: 'FourthWindow' object has no attribute 'Show_Set' Python Py Qt5

При попытке вызова возникает ошибка, якобы такого атрибута не существует, хотя он есть, при этом все классы окон идентичны но окно 4 и 5 не хочет открываться, из-за данной ошибки, абсолютно не понимаю в чем причина так как остальные окна работают.

class MyWidget(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MyWidget, self).__init__()
        self.setupUi(self)
        self.setWindowTitle('FirstWindow')
        self.A = set()
        self.B = set()
        self.C = set()
        self.D = set()
        self.D_4 = set()
        self.U = set()
        self.N_A = set()
        self.N_B = set()
        self.N_C = set()
        self.Z = set()
        self.start = ""
        self.finish = ""
        self.pushButton_4.clicked.connect(self.Set_Variant)
        self.pushButton.clicked.connect(self.Set_A)
        self.pushButton_2.clicked.connect(self.Set_B)
        self.pushButton_3.clicked.connect(self.Set_C)
        self.pushButton_9.clicked.connect(self.Universe_Set)
        self.pushButton_5.clicked.connect(self.show_window_2)
        self.pushButton_6.clicked.connect(self.show_window_3)
        self.pushButton_7.clicked.connect(self.show_window_4)
        self.pushButton_8.clicked.connect(self.show_window_5)

    def Set_Variant(self):
        Name = self.textEdit.toPlainText()
        G = int(self.textEdit_2.toPlainText())
        N = int(self.textEdit_3.toPlainText())
        M = self.textEdit_4.toPlainText()
        if M == "ІВ": N+=2
        R = str((N+G%60)%30+1)
        S = str(Name)+ " " + str(M) + "-" + str(G) +"\nМій варіант: " + str(R)
        self.label_10.setText(str(S))
        print(S)

    def Universe_Set(self):
        self.start = self.textEdit_11.toPlainText()
        self.finish = self.textEdit_12.toPlainText()
        self.U = set(int(x) for x in range(int(self.start),int(self.finish)+1))
        print(self.U)

    def Set_A(self):
        F_1 = self.textEdit_5.toPlainText()
        if F_1 == "":
            a = self.textEdit_8.toPlainText()
            self.A = set(int(x) for x in a.split()) 
        else:
            while len(self.A) < int(F_1):
                self.A.add(random.randint(int(self.start),int(self.finish)))
        self.N_A = self.U.difference(self.A)
        print(self.A)

    def Set_B(self):
        F_2 = self.textEdit_6.toPlainText()
        if F_2 == "":
            b = self.textEdit_9.toPlainText()
            self.B = set(int(x) for x in b.split())
        else:
            while len(self.B) <= int(F_2):
                self.B.add(random.randint(int(self.start),int(self.finish)))
        self.N_B = self.U.difference(self.B)
        print(self.B)

    def Set_C(self):
        F_3 = self.textEdit_7.toPlainText()
        if F_3 == "":
            c = self.textEdit_10.toPlainText()
            self.C = set(int(x) for x in c.split())
        else:
            while len(self.C) <= int(F_3):
                self.C.add(random.randint(int(self.start),int(self.finish)))
        self.N_C = self.U.difference(self.C)
        print(self.C)    

    def show_window_2(self):
        self.w2 = SecondWindow(self)
        self.w2.show()

    def show_window_3(self):
        self.w3 = ThirdWindow(self)
        self.w3.show()

    def show_window_4(self):
        self.w4 = FourthWindow(self)
        self.w4.show()

    def show_window_5(self):
        self.w5 = FifthWindow(self)
        self.w5.show()

############################################################################################################################

class SecondWindow(QMainWindow, Ui_Window_2):               
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.parent = parent
        self.setupUi(self)
        self.setWindowTitle('SecondWindow')
        self.C_1 = set()
        self.C_2 = set()
        self.C_3 = set()
        self.C_4 = set()
        self.C_5 = set()
        self.pushButton.clicked.connect(self.Print_Set)
        self.pushButton_4.clicked.connect(self.Calculate_1)
        self.pushButton_5.clicked.connect(self.Calculate_2)
        self.pushButton_6.clicked.connect(self.Calculate_3)
        self.pushButton_7.clicked.connect(self.Calculate_4)
        self.pushButton_8.clicked.connect(self.Calculate_5)
        self.pushButton_9.clicked.connect(self.Calculate_6)
        s
elf.pushButton_2.clicked.connect(self.Save_Text)

    def Print_Set(self):
        self.label_6.setText(str(self.parent.A))
        self.label_7.setText(str(self.parent.B))
        self.label_8.setText(str(self.parent.C))

    def Calculate_1(self):
        self.label_5.setText(str(self.parent.A))
        self.label_9.setText(str(self.parent.N_B))
        self.C_1 = self.parent.A.intersection(self.parent.N_B)
        self.label_10.setText(str(self.C_1))

    def Calculate_2(self):
        self.label_5.setText(str(self.parent.B))
        self.label_9.setText(str(self.parent.N_A))
        self.C_2 = self.parent.B.intersection(self.parent.N_A)
        self.label_10.setText(str(self.C_2))

    def Calculate_3(self):
        self.label_5.setText(str(self.parent.C))
        self.label_9.setText(str(self.parent.B))
        self.C_3 = self.parent.C.union(self.parent.B)
        self.label_10.setText(str(self.C_3))

    def Calculate_4(self):
        self.label_5.setText(str(self.C_1))
        self.label_9.setText(str(self.C_2))
        self.C_4 = self.C_1.union(self.C_2)
        self.label_10.setText(str(self.C_4))

    def Calculate_5(self):
        self.label_5.setText(str(self.C_4))
        self.label_9.setText(str(self.C_3))
        self.C_5 = self.C_4.intersection(self.C_3)
        self.label_10.setText(str(self.C_5))

    def Calculate_6(self):
        self.label_5.setText(str(self.C_5))
        self.label_9.setText(str(self.parent.C))
        self.parent.D = self.C_5.intersection(self.parent.C)
        self.label_10.setText(str(self.parent.D))

    def Save_Text(self):
        with open('file_1.txt', 'w') as f:
            f.write(str(self.parent.D))

#############################################################################################################################

class ThirdWindow(QMainWindow, Ui_window_3):               
    def __init__(self, parent=None):
        super(ThirdWindow, self).__init__(parent)
        self.setupUi(self)
        self.setWindowTitle('ThirdWindow')
        self.parent = parent
        self.D_1 = set()

        self.pushButton.clicked.connect(self.Print_Set)
        self.pushButton_2.clicked.connect(self.Save_Text_2)
        self.pushButton_4.clicked.connect(self.Do_1)
        self.pushButton_9.clicked.connect(self.Do_2)

    def Print_Set(self):
        self.label_6.setText(str(self.parent.A))
        self.label_7.setText(str(self.parent.B))
        self.label_8.setText(str(self.parent.C))

    def Do_1(self):
        self.label_5.setText(str(self.parent.A))
        self.label_9.setText(str(self.parent.B))
        self.D_1 = self.parent.A.symmetric_difference(self.parent.B)
        self.label_10.setText(str(self.D_1))

    def Do_2(self):
        self.label_5.setText(str(self.D_1))
        self.label_9.setText(str(self.parent.C))
        self.parent.D_4 = self.D_1.intersection(self.parent.C)
        self.label_10.setText(str(self.parent.D_4))

    def Save_Text_2(self):
            with open('file_2.txt', 'w') as f:
                f.write(str(self.parent.D_4))

############################################################################################################################

class FourthWindow(QMainWindow, Ui_window_4):               
    def __init__(self, parent=None):
        super(FourthWindow, self).__init__(parent)
        self.setupUi(self)
        self.setWindowTitle('FourthWindow')
        self.parent = parent
        self.Z_1 = set()
        self.Z_2 = set()

        self.pushButton.clicked.connect(self.Show_Set)
        self.pushButton_2.clicked.connect(self.Save_Text)

        def Show_Set(self):
            self.label_4.setText(str(self.parent.A))
            self.label_6.setText(str(self.parent.N_B))
            self.Z_1 = self.parent.N_A.intersection(self.parent.B)
            self.Z_2 = self.parent.N_B.intersection(self.parent.A)
            self.parent.Z = self.Z_1.union(self.Z_2)
            self.label_7.setText(str(self.parent.Z))

        def Save_Text(self):
            with open('file_3.txt', 'w') as f:
                f.write(str(sel
f.parent.Z))

#############################################################################################################################

class FifthWindow(QMainWindow, Ui_window_5):               
    def __init__(self, parent=None):
        super(FifthWindow, self).__init__(parent)
        self.setupUi(self)
        self.setWindowTitle('FifthWindow')
        self.parent = parent

        self.pushButton.clicked.connect(self.Result_1)
        self.pushButton_2.clicked.connect(self.Result_2)
        self.pushButton_3.clicked.connect(self.Result_3)
        self.pushButton_4.clicked.connect(self.Compare_Set)

        def Result_1(self):
            self.label_7.setText(str(self.parent.D))

        def Result_2(self):
            self.label_8.setText(str(self.parent.D))

        def Result_3(self):
            self.label_9.setText(str(self.parent.Z))

        def Compare_Set(self):
            self.label_10.setText(str(self.parent.D))
            self.label_11.setText(str(self.parent.D_4))
            self.label_12.setText(str(self.parent.D))

#############################################################################################################################
if name == '__main__':
    app = QApplication(sys.argv)
    ex = MyWidget()
    ex.show()
    sys.exit(app.exec_())

Ошибка:

Traceback (most recent call last):
    self.w4 = FourthWindow(self)
  File "LAB_1.py", line 1006, in init
    self.pushButton.clicked.connect(self.Show_Set)
AttributeError: 'FourthWindow' object has no attribute 'Show_Set'

Ответы (1 шт):

Автор решения: gil9red

Проблема в вложенности кода, в вашем варианте, у вас Show_Set и Save_Text объявляются не как методы класса, а как созданные в __init__ функции, причем после обращения к ним.

Правильно так:

class FourthWindow(QMainWindow, Ui_window_4):               
    def __init__(self, parent=None):
        super(FourthWindow, self).__init__(parent)
        self.setupUi(self)
        self.setWindowTitle('FourthWindow')
        self.parent = parent
        self.Z_1 = set()
        self.Z_2 = set()

        self.pushButton.clicked.connect(self.Show_Set)
        self.pushButton_2.clicked.connect(self.Save_Text)

    def Show_Set(self):
        self.label_4.setText(str(self.parent.A))
        self.label_6.setText(str(self.parent.N_B))
        self.Z_1 = self.parent.N_A.intersection(self.parent.B)
        self.Z_2 = self.parent.N_B.intersection(self.parent.A)
        self.parent.Z = self.Z_1.union(self.Z_2)
        self.label_7.setText(str(self.parent.Z))

    def Save_Text(self):
        with open('file_3.txt', 'w') as f:
            f.write(str(self.parent.Z))
→ Ссылка