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

我得到了这个,我期望它在打印x.withdraw()时能打印410。

Kyle 12345 500

Traceback (most recent call last):

File "bank.py", line 21, in <module>

print x.withdraw()

TypeError: 'int' object is not callable

这是我的代码:

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()

我是否需要在类本身中修复某些问题,或者我的方法调用有问题?

回答:

您在实例上设置具有相同名称的属性:

self.withdraw = withdraw

您正在尝试调用的是该属性,而不是方法。Python不会区分方法和属性,它们也不位于单独的命名空间中。

为属性使用其他名称;withdrawn(退出的过去时)作为更好的属性名称浮现在脑海:

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"

(我也纠正了一个错字;您曾balace在打算使用的位置使用过balance)。

以上是 &#39;int&#39;对象在python中不可调用 的全部内容, 来源链接: utcz.com/qa/400242.html

回到顶部