python中int对象不可调用_'int'对象在python中不可调用

I got this and I was expecting it to print 410 when I print x.withdraw().

Kyle 12345 500

Traceback (most recent call last):

File "bank.py", line 21, in

print x.withdraw()

TypeError: 'int' object is not callable

Here is my code:

class Bank:

def __init__(self, name, id, balance, withdraw):

self.name = name

self.id = id

self.balance = balance

self.withdraw = withdraw

def print_info(self):

return "%s %d %d" % (self.name, self.id, self.balance)

def withdraw(self):

if self.withdraw > self.balance:

return "ERROR: Not enough funds for this transfer"

elif self.withdraw < self.balance and self.withdraw >= 0:

self.balance = self.balace - self.withdraw

return self.balance

else:

return "Not a legitimate amount of funds"

x = Bank("Kyle", 12345, 500, 90)

print x.print_info()

print x.withdraw()

Do I need to fix something within the class itself or is something wrong with my method calling?

解决方案

You set an attribute on the instance with the same name:

self.withdraw = withdraw

It is that attribute you are trying to call now, not the method. Python doesn't differentiate between methods and attributes, they do not live in separate namespaces.

Use a different name for the attribute; withdrawn (past tense of to withdraw) springs to mind as a better attribute name:

class Bank:

def __init__(self, name, id, balance, withdrawn):

self.name = name

self.id = id

self.balance = balance

self.withdrawn = withdrawn

def print_info(self):

return "%s %d %d" % (self.name, self.id, self.balance)

def withdraw(self):

if self.withdrawn > self.balance:

return "ERROR: Not enough funds for this transfer"

elif self.withdrawn < self.balance and self.withdrawn >= 0:

self.balance = self.balance - self.withdrawn

return self.balance

else:

return "Not a legitimate amount of funds"

(I also corrected a typo; you used balace in one location where you meant to use balance).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值