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

使用OOP概念实现银行类存取款功能时出现语法错误求助

问题分析与修正方案

我来帮你梳理下这段银行类代码里的问题,以及对应的修复方式:

存在的错误点

  • 语法错误:赋值语句不能直接作为返回表达式
    Python不支持return self.balance += self.amount这种写法,赋值操作的语法不允许直接嵌套在return里,得先完成余额更新,再单独返回结果。
  • 参数与实例属性混淆
    在取款方法里,你用了self.amount来和余额比较,但这里的取款金额是方法传入的参数amount,不是实例属性;另外存款方法里的self.amount = amount完全多余,这个金额只是本次操作的临时值,不需要存在实例中。
  • 方法名拼写错误
    withrawl应该是withdrawal,虽然这不是语法错误,但不符合常规命名规范,容易造成误解。
  • 代码执行逻辑错误
    取款方法里的print('Withdrawl accepted')现在不管取款是否成功都会执行,应该放到余额充足的分支里,只有取款成功时才打印。

修正后的完整代码

class Bank:
    def __init__(self, owner, balance):
        self.owner = owner
        self.balance = balance

    def __str__(self):
        return f"Bank owner:{self.owner}\nBank balance:{self.balance}"

    def deposit(self, amount):
        # 直接更新余额,无需存储临时amount为实例属性
        self.balance += amount
        print('Deposit accepted')
        return self.balance

    def withdrawal(self, amount):
        # 使用方法传入的参数amount做判断,而非self.amount
        if amount > self.balance:
            print('Withdrawal exceeded the available balance')
            return self.balance  # 返回原余额,也可根据需求返回None
        else:
            self.balance -= amount
            print('Withdrawal accepted')
            return self.balance

测试示例

# 创建账户实例
my_account = Bank("Prachi", 1000)
print(my_account)
# 存款操作
my_account.deposit(500)
print(my_account)
# 正常取款
my_account.withdrawal(300)
print(my_account)
# 尝试超额取款
my_account.withdrawal(1500)
print(my_account)

这样修改后,代码就能正常运行,核心的存款、取款逻辑也更清晰严谨啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:02:48