如何在不同的函数中访问局部变量
How to access a local variable in a different function
我创建了一个 "Hangman" 游戏,其中计算机选择一个随机单词,用户必须逐个字母地猜这个单词。
最后,我想问用户是否想再玩游戏,但是我不能使用一种方法中使用的变量,因为它们的范围仅限于python中的一个函数。
class Hangman():
def start(self):
y = []
blanks = []
guessed = []
repeat = []
self.gamePlay = True
def beginning(self):
while l.gamePlay == True:
l.start()
ask = input('Would you like to play again(Y or N): ')
if ask.upper() == 'Y':
pass
else:
l.gamePlay = False
l = Hangman()
l.beginning()
我想知道如何扩展变量 'gamePlay' 的范围,这样它甚至可以在 beginning() 函数中工作。
目前,它说:AttributeError:'Hangman' 对象没有属性 'gamePlay'。
刚开始学习Python遇到了这个困难
如果你只是把变量声明上移,像这样
class Hangman():
gamePlay = True
它成为对象的成员,而不是函数的局部变量。因此,它在其所有方法中都是可见的。
您可以通过将所有变量移动到 class、__init__
的构造函数来大大简化 class,如下所示
另请注意,在 class 的任何函数内,您可以通过 self.x
访问 class x
的属性
class Hangman():
def __init__(self):
self.y = []
self.blanks = []
self.guessed = []
self.repeat = []
self.gameplay = True
def beginning(self):
while self.gameplay == True:
ask = input('Would you like to play again(Y or N): ')
if ask.upper() == 'Y':
pass
else:
self.gameplay = False
然后当你运行你的代码如下。
hm = Hangman()
hm.beginning()
您可以观察输出如下:
Would you like to play again(Y or N): Y
Would you like to play again(Y or N): Y
Would you like to play again(Y or N): Y
Would you like to play again(Y or N): N
我创建了一个 "Hangman" 游戏,其中计算机选择一个随机单词,用户必须逐个字母地猜这个单词。
最后,我想问用户是否想再玩游戏,但是我不能使用一种方法中使用的变量,因为它们的范围仅限于python中的一个函数。
class Hangman():
def start(self):
y = []
blanks = []
guessed = []
repeat = []
self.gamePlay = True
def beginning(self):
while l.gamePlay == True:
l.start()
ask = input('Would you like to play again(Y or N): ')
if ask.upper() == 'Y':
pass
else:
l.gamePlay = False
l = Hangman()
l.beginning()
我想知道如何扩展变量 'gamePlay' 的范围,这样它甚至可以在 beginning() 函数中工作。
目前,它说:AttributeError:'Hangman' 对象没有属性 'gamePlay'。
刚开始学习Python遇到了这个困难
如果你只是把变量声明上移,像这样
class Hangman():
gamePlay = True
它成为对象的成员,而不是函数的局部变量。因此,它在其所有方法中都是可见的。
您可以通过将所有变量移动到 class、__init__
的构造函数来大大简化 class,如下所示
另请注意,在 class 的任何函数内,您可以通过 self.x
x
的属性
class Hangman():
def __init__(self):
self.y = []
self.blanks = []
self.guessed = []
self.repeat = []
self.gameplay = True
def beginning(self):
while self.gameplay == True:
ask = input('Would you like to play again(Y or N): ')
if ask.upper() == 'Y':
pass
else:
self.gameplay = False
然后当你运行你的代码如下。
hm = Hangman()
hm.beginning()
您可以观察输出如下:
Would you like to play again(Y or N): Y
Would you like to play again(Y or N): Y
Would you like to play again(Y or N): Y
Would you like to play again(Y or N): N