对我为什么会遇到TypeError感到困惑:'int'对象不可调用

时间:2014-05-10 19:19:06

标签: python class

我看过类似的问题,仍然无法解决这个问题。我绝对相信我在某个地方犯了一个非常愚蠢的错误,但我似乎无法找到它。

对于此代码。

class BankAccount:
    def __init__(self, initial_balance):
        self.balance = initial_balance

    def deposit(self, amount):
        self.deposit = amount
        self.balance = self.balance + self.deposit

    def withdraw(self, amount):
        self.withdraw = amount 
        self.balance = self.balance - self.withdraw
        self.fee = 5
        self.total_fees = 0

        if self.balance < 0:
            self.balance = self.balance - self.fee
            self.total_fees += self.fee 

    def get_balance(self):
        current_balance = self.balance
        return current_balance

    def get_fees(self):
        return self.total_fees

当我运行代码时,一切运行正常

my_account = BankAccount(10)
my_account.withdraw(15)
my_account.deposit(20)
print my_account.get_balance(), my_account.get_fees()

但是,如果我再打电话取消

my_account = BankAccount(10)
my_account.withdraw(15)
my_account.withdraw(15)
my_account.deposit(20)
print my_account.get_balance(), my_account.get_fees()

它会抛出此错误。

  

TypeError:'int'对象不可调用

我不明白为什么它可以正常工作,直到我再拨打电话才能退出。请帮忙。

2 个答案:

答案 0 :(得分:4)

withdraw方法

中执行此操作时
self.withdraw = amount 

你用amount替换它。下次调用withdraw时,您将获得amount对象。在您的情况下,int

同样适用于deposit

self.deposit = amount

为您的数据成员提供与您的方法不同的名称。

答案 1 :(得分:4)

执行self.deposit = amount后,您将使用金额覆盖deposit方法。您使用withdrawself.withdraw = amount中执行相同的操作。您需要为数据属性指定与方法不同的名称(例如调用方法withdraw,但调用属性withdrawalAmount或类似的东西)。