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

Python开发BankAccount类:如何添加账号列表用于转账校验?

银行账户系统代码修改方案

修改位置说明

你需要在2个核心位置添加代码,同时修正原有transferMoney方法的逻辑问题:

  • 首先在BankAccount类下添加类级别的全局账户存储属性,所有实例共享该列表
  • 在类的__init__初始化方法中添加代码,每次创建新账户时自动把账户实例存入全局列表
  • 修正transferMoney方法的校验逻辑,先匹配账号是否存在,再做后续操作

原有代码的问题说明

你现在写的transferMoney方法存在2个逻辑错误:

  1. 参数传递的是账号数字,不是账户实例,直接操作yourAccountNumber.balance会报错
  2. 校验逻辑if yourAccountNumber and aimAccountNumber in []写法完全无效,既没有绑定实际的账户列表,判断逻辑也不符合Python语法(不能同时判断两个值in列表这么写)

修改后的完整代码

class BankAccount:
    # 类属性:存储所有创建的账户实例,所有实例共享该列表
    all_accounts = []

    def __init__(self, accountNumber, name, balance) -> None:
        self.accountNumber = accountNumber
        self.name = name
        self.balance = balance
        # 每次创建新账户时,自动加入全局账户列表
        BankAccount.all_accounts.append(self)
        print(f"尊敬的{self.name},您的账号{self.accountNumber}当前余额为{self.balance}元。")

    def withdrawMoney(self, amount):
        if self.balance < amount:
            print(f"尊敬的{self.name},账号{self.accountNumber}余额不足,当前余额{self.balance}元,无法取出{amount}元。")
            return
        self.balance -= amount
        return f"尊敬的{self.name},账号{self.accountNumber}已取出{amount}元,剩余余额{self.balance}元。"
            
    def depositMoney(self, amount):
        self.balance += amount
        return f"尊敬的{self.name},账号{self.accountNumber}已存入{amount}元,当前总余额{self.balance}元。"
        
    def transferMoney(self, target_account_num, amount):
        # 先校验转出账户余额是否足够
        if self.balance < amount:
            return f"转出失败:账号{self.accountNumber}余额不足,当前余额{self.balance}元。"
        # 遍历全局账户列表,查找目标账号是否存在
        target_account = None
        for acc in BankAccount.all_accounts:
            if acc.accountNumber == target_account_num:
                target_account = acc
                break
        # 目标账号不存在直接返回错误
        if not target_account:
            return "转出失败:输入的目标账号不存在,请核对后重试。"
        # 执行转账逻辑
        self.balance -= amount
        target_account.balance += amount
        return f"转账成功!您的账号{self.accountNumber}已向账号{target_account_num}转出{amount}元,当前剩余余额{self.balance}元。"


# 测试代码
a1 = BankAccount(1234,"Ahmet",5000)
a2 = BankAccount(3456,"Kerem",8000)

# 调用转账方法:a1给a2转1000元,只需要传目标账号和金额即可
print(a1.transferMoney(3456, 1000))
# 验证a2的余额
print(f"账号3456当前余额:{a2.balance}元")

代码说明

  1. 所有创建的账户实例会自动存入BankAccount.all_accounts类属性,无需手动维护列表
  2. 转账时方法会自动遍历全局列表校验目标账号是否存在,不存在直接抛出错误
  3. 优化了转账方法的参数,转出方就是调用方法的账户实例本身,不需要重复传自己的账号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:04