如何在不同的函数中访问局部变量

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