我看过类似的问题,仍然无法解决这个问题。我绝对相信我在某个地方犯了一个非常愚蠢的错误,但我似乎无法找到它。
对于此代码。
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'对象不可调用
我不明白为什么它可以正常工作,直到我再拨打电话才能退出。请帮忙。
答案 0 :(得分:4)
在withdraw
方法
self.withdraw = amount
你用amount
替换它。下次调用withdraw
时,您将获得amount
对象。在您的情况下,int
。
同样适用于deposit
:
self.deposit = amount
为您的数据成员提供与您的方法不同的名称。
答案 1 :(得分:4)
执行self.deposit = amount
后,您将使用金额覆盖deposit
方法。您使用withdraw
在self.withdraw = amount
中执行相同的操作。您需要为数据属性指定与方法不同的名称(例如调用方法withdraw
,但调用属性withdrawalAmount
或类似的东西)。