我创建了一个“ 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:“行侠”对象没有属性“ gamePlay”。
我刚刚开始学习Python并克服了这一困难。
答案 0 :(得分:0)
如果只是将变量声明上移,就像这样
class Hangman():
gamePlay = True
与函数局部变量相反,它成为对象的成员。因此,从其所有方法中都可以看到它。
答案 1 :(得分:0)
通过将所有变量移动到类的构造函数__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