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

Python类间属性调用异常:多次触发输入请求的问题排查

问题原因分析

1. 场景实例被重复创建

Map类的next_scene方法存在核心问题:每次调用该方法时,都会重新构建包含所有场景的字典,并且为每个场景类创建全新的实例:

def next_scene(self, scene_name):
    scenes = {
            'living': Living(),
            'reception': Reception(),
            'first': First(),
            'second': Second(),
            'third': Third(),
            'death':Death()
        }
    return scenes.get(scene_name)

这意味着每次切换场景,所有场景(包括完全无关的)都会被重新实例化一遍,而不是复用已存在的实例。

2. Reception初始化会触发Living的输入逻辑

Reception类的构造方法中直接实例化了Living类:

class Reception(Room):
    def __init__(self):
        self.living=Living()

而Living的__init__方法包含4次用户输入请求(姓名、三个朋友名称)。因此,只要Reception被实例化,就会强制触发这4次输入。

3. 输入请求的叠加

结合上述两个问题,最终导致多次输入的叠加:

  • 程序启动时调用next_scene,会同时实例化Living(4次输入)和Reception(又实例化一次Living,再加4次输入),累计8次。
  • 当从Reception切换到First场景时,再次调用next_scene,又会重新实例化Living(4次输入),此时累计达到12次,正好对应你遇到的问题。

内容的提问来源于stack exchange,提问作者new2python

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:25:01