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

Python循环外初始化变量随循环内类属性同步更新问题求解

问题原因

你遇到的问题和类属性无关,错误根源是Python的可变对象引用赋值机制。

Python中的字典属于可变对象,你执行original_values = self.combat_skills时,并没有生成一份新的技能值副本,只是让original_values和self.combat_skills指向了内存里的同一个字典对象。因此后续你修改self.combat_skills里的数值时,读取original_values拿到的也是修改后的值,自然就出现了校验规则失效的问题。

修复方案

你只需要把初始化original_values的代码改成浅拷贝字典即可,由于你的字典值都是不可变的整数,无需使用深拷贝:

# 原错误代码
# original_values = self.combat_skills
# 修改为
original_values = self.combat_skills.copy()

额外注意事项

你当前的Player_Character类中,combat_skills字典和单独声明的self.small_guns、self.big_guns、self.energy_weapons属性是独立存储的,你目前的升级逻辑只修改了字典中的数值,升级结束后建议同步更新单独的技能属性,避免其他地方调用独立属性时出现数值不一致的问题:

# 在确认升级、退出循环后添加同步逻辑
self.small_guns = self.combat_skills['small guns']
self.big_guns = self.combat_skills['big guns']
self.energy_weapons = self.combat_skills['energy weapons']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:24:05