Skip to content
Advertisement

Getting list from a function within a different class to a function within a different class

I’m playing around with Kivy a bit and can’t understand why MenuScreen.number_list doesn’t return the list from the MenuScreen class.

class MenuScreen(Screen):
    def process(self):
        self.text = self.ids.input.text
        print(self.text)
    pass

    def submit(self):
        number_list = []
        for i in self.text:
            number_list.append(int(i))

class GuessScreen(Screen):
    def guess(self, number):
        for i in MenuScreen.number_list:
            if correct == True:
                if number == i:
                    print("Correct, next number")
                    correct = True
                else:
                    print("Wrong")
                    correct = False
    pass

Advertisement

Answer

You need to declare number_list as a class property so you can use it, otherwise it’s just a variable with its scope only inside the method.

class MenuScreen(Screen):
    number_list = []
    def process(self):
        self.text = self.ids.input.text
        print(self.text)
    pass

    def submit(self):
        number_list = []
        for i in self.text:
            number_list.append(int(i))

class GuessScreen(Screen):
    def guess(self, number):
        MenuScreen = MenuScreen(Screen)
        MenuScreen.submit()
        for i in MenuScreen.number_list:
            if correct == True:
                if number == i:
                    print("Correct, next number")
                    correct = True
                else:
                    print("Wrong")
                    correct = False
    pass

And also make sure you create an object for the class and call its methods

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement