我创建了一个“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'的范围,使其即使在begin()函数中也能工作。
目前,它说:AttributeError:'Hangman'对象没有属性'gamePlay'。
我刚开始学习Python并且已经遇到了这个困难。
您可以通过将所有变量移动到类__init__
的构造函数来大大简化您的类,如下所示
另请注意,在您的类的任何函数内,您可以通过执行x
访问类self.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
如果您只是移动变量声明,就像这样
class Hangman():
gamePlay = True
它成为对象的成员,而不是函数的本地变量。因此,从所有方法中都可以看到它。