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

如何在Python中跨类修改变量:大富翁游戏银行金额不更新问题

问题根因

你在pay_bank方法中每次调用Bank().receive_payment(to_bank)时,都会通过Bank()创建一个全新的Bank类临时实例。每个新实例初始化时bank_total都会被重置为14580,且调用完方法后该临时实例会直接被回收,没有复用同一个银行实例,因此累加的数值无法被持久保存。

修复方案

整个游戏全局应该仅保留一个唯一的银行实例,所有玩家的支付操作都针对这个实例执行。修改方式如下:

  1. 在游戏初始化逻辑/全局位置创建唯一的Bank实例,不要在支付逻辑中临时生成实例
  2. 将该实例绑定到Card1类中,后续支付操作直接复用该实例调用方法

代码示例

# 导入Bank类后先创建全局唯一的银行实例,不要在支付逻辑内创建
from bank import Bank
game_bank = Bank()

# 修改Card1类,绑定银行实例
class Card1:
    def __init__(self, bank_instance):
        self.amount = 1500
        self.properties = {}
        self.bank = bank_instance  # 持有全局银行实例的引用
    
    def manage_player1_card(self):
        def pay_bank():
            to_bank = int(payBox.get())
            if self.amount > to_bank:
                payBox.delete(0, END)
                self.amount -= to_bank
                # 复用已有实例,不要新建Bank()
                self.bank.receive_payment(to_bank)

# 初始化Card1时传入全局银行实例
player1_card = Card1(bank_instance=game_bank)

可选简化方案

如果不想每次传参,也可以直接在bank.py文件末尾提前实例化好银行对象:

# bank.py文件末尾添加
bank = Bank()

之后Card1中直接导入该实例使用即可:

from bank import bank

# pay_bank方法中直接调用
bank.receive_payment(to_bank)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:02