我得到了这个,我打算在打印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()
我是否需要在类中修复某些内容,或者我的方法调用有问题?
答案 0 :(得分:5)
您在实例上设置了一个具有相同名称的属性:
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
。