文本冒险游戏代码出现AttributeError: __enter__错误,原因是什么?
问题解决:AttributeError: enter 及代码修正
错误原因
with语句仅适用于具备上下文管理能力的对象(即实现了__enter__和__exit__方法的对象,比如文件句柄、线程锁等)。你代码里的y.index("~")返回的是一个整数,不属于这类对象,所以会抛出AttributeError: __enter__错误。
代码修正
首先移除错误的with语句,直接获取索引即可。另外原代码中y[_0:_0]会取到空字符串,这显然不符合提取敌人信息的需求,以下是两种常见的修正方案:
方案1:提取~之后的所有内容
如果敌人信息是从~开始到字符串末尾,代码调整为:
_0 = y.index("~") enemy_info = y[_0+1:] self.room_enemies.append(enemy_info) print(enemy_info)
方案2:提取~与另一标记之间的内容
如果敌人信息被~和另一标记(比如^)包裹,需要先找到结束标记的索引:
start_idx = y.index("~") end_idx = y.index("^", start_idx) enemy_info = y[start_idx+1:end_idx] self.room_enemies.append(enemy_info) print(enemy_info)
内容的提问来源于stack exchange,提问作者Dominic Miller
相关产品推荐
相关产品推荐

