编辑:我意识到我误解了这个问题,数字列表必须是一个类变量才能被调用。抛开这一点,它仍然可能(潜在(有用。
我和Kivy玩了一会儿,不明白为什么MenuScreen.number_list不从MenuScreen类返回列表。
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
您需要将number_list
声明为类属性,以便使用它,否则它只是一个变量,其作用域仅在方法内部。
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
还要确保为类创建一个对象并调用其方法
您的代码没有返回任何值。它站着,这种方法:
def submit(self):
number_list = []
for i in self.text:
number_list.append(int(i))
将所有内容附加到列表中,然后离开该方法。您没有"return"关键字。
def submit(self):
number_list = []
for i in self.text:
number_list.append(int(i))
return number_list # <-- this is necessary in ANY function where you wish
# to get some value/object out of the
# function into a different scope.
这将在调用函数后返回函数的数字列表,因此您可以执行以下操作:
ms = MainScreen()
my_number_list = ms.submit()
顺便说一句,代码中使用的"pass"关键字是不必要的,可能会导致一些意外行为,所以我会注意到这一点!