Python聊天机器人猜词游戏报错:'Game'对象无'tries_left'属性求助
问题解决:AttributeError: 'Game' object has no attribute 'tries_left'
问题根源
你在Game类的__init__方法里定义了一个嵌套函数tries_left(),但这个函数从未被调用过。这导致self.tries_left属性从未被创建,当play()方法尝试访问这个属性时,就会抛出AttributeError。
修复方案
直接在__init__中初始化self.tries_left属性,无需嵌套函数:
class Game: def __init__(self, word): self.guessed_letters = [] self.word = word # 直接初始化tries_left属性为8 self.tries_left = 8 def play(self): dashed_word = "" while dashed_word != self.word: send_message("Guess a letter") guess = read_message() self.guessed_letters.append(guess) if guess not in self.word: send_message("Your guess is wrong") self.tries_left -= 1 dashed_word = "" for char in self.word: if char in self.guessed_letters: dashed_word += char else: dashed_word += "_ " send_message(dashed_word) send_message(self.guessed_letters) send_message("You have " + str(self.tries_left) + " tries left") send_message("Congratulations! You have guessed the word") game = Game("snowman") game.play()
关键修改说明
- 删除了
__init__里的嵌套函数tries_left(),直接通过self.tries_left = 8完成属性初始化 - 确保
play()方法访问self.tries_left时,该属性已经存在
内容的提问来源于stack exchange,提问作者user21447674
相关产品推荐
相关产品推荐

