You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:42:46