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

Python OOP第二次调用deposit方法报'int不可调用'错误如何解决?

报错原因
  • 核心问题为实例方法名与实例属性名重名,导致方法被覆盖
  • 你定义的deposit是Bank类的实例方法,但是在方法内部执行了self.deposit = deposit操作,会将实例的deposit属性直接覆盖为传入的整数类型存款金额。
  • 第一次调用bank.deposit(500)时,bank.deposit还指向方法本身,可正常执行;执行完成后bank.deposit已经被替换为整数500,第二次调用时相当于尝试调用整数,就会抛出对应类型错误。
  • 另外代码中的withdraw方法也存在完全相同的重名问题,后续调用时也会触发同类报错,且原方法缺少钱包扣款的逻辑。
解决方案

修改方法内部的属性命名,避免和方法名重名即可,参考修改后代码:

class Bank():
    def __init__(self,wallet):
        self.wallet = wallet

    def withdraw(self,withdraw_amount):
        self.withdraw_amount = withdraw_amount
        self.wallet -= self.withdraw_amount

    def deposit(self, deposit_amount):
        self.deposit_amount = deposit_amount
        self.wallet += self.deposit_amount


bank = Bank(0)
bank.deposit(500)
print(bank.wallet)
bank.deposit(500)
print(bank.wallet)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:03