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
相关产品推荐
相关产品推荐

