从不同类中的函数到不同类中函数的列表

  • 本文关键字:函数 同类 列表 python
  • 更新时间 :
  • 英文 :


我和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"关键字是不必要的,可能会导致一些意外行为,所以我会注意到这一点!

最新更新