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

Python中如何在其他类实例中获取更新后的变量值?

问题原因

你遇到的核心问题是值传递导致的状态不同步:

  • 创建accountX_interest = SavingsAccount(5, accountX.balance, 0.05)时,传入的accountX.balance是一个独立数值(500),SavingsAccount会将这个数值存在自身的self.balance中,和原始accountX对象没有关联。
  • 后续对accountX执行的存款、取款操作,只会修改accountX自身的balance,不会影响accountX_interest里存储的独立数值。
  • 而credit_request是在存款、取款操作完成后创建的,传入的是当时accountX.balance的最新值(800),所以它能拿到正确数值。
解决方案

有两种常见修复方式,可根据需求选择:

方式1:延迟创建SavingsAccount实例

等所有对accountX的余额操作完成后,再创建accountX_interest,确保传入最新余额:

accountX = Account(5, 500)
# 先执行存款、取款操作
deposit = accountX.deposit(500)
withdraw = accountX.withdraw(200)
# 此时创建SavingsAccount,传入更新后的balance
accountX_interest = SavingsAccount(5, accountX.balance, 0.05)
credit_request = BusinessAccount("CZ50", accountX.balance, 5000)

# 后续打印操作不变
print(deposit)
print(withdraw)
print(accountX.get_balance())
print(accountX_interest.calculate_interest())
print(credit_request.calculate_credit())
print(credit_request.get_balance())

方式2:让SavingsAccount持有原始Account的引用

如果需要后续accountX余额变化时,accountX_interest能自动获取最新值,可修改SavingsAccount实现,让它持有原始Account对象的引用:

class SavingsAccount:
    def __init__(self, account, interest_rate):
        # 持有原始Account对象的引用
        self.account = account
        self.interest_rate = interest_rate

    def calculate_interest(self):
        # 每次计算时从原始Account获取最新余额
        current_balance = self.account.balance
        interest_rate_calculation = current_balance * self.interest_rate
        return f'Your interest rate is {self.interest_rate} and balance {current_balance}. Total calculated is {interest_rate_calculation}.'

# 实例化时传入accountX对象而非balance数值
accountX = Account(5, 500)
accountX_interest = SavingsAccount(accountX, 0.05)
deposit = accountX.deposit(500)
withdraw = accountX.withdraw(200)
credit_request = BusinessAccount("CZ50", accountX.balance, 5000)

这种方式下,无论何时调用calculate_interest,都会拿到accountX的最新余额。

补充说明

credit_request当前能拿到正确值只是因为创建时机在余额更新之后。如果后续再修改accountX的余额,credit_request的balance也不会同步,除非同样用方式2让它持有原始Account的引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:44:53