'int' object is not callable in python

后端 未结 1 424
借酒劲吻你
借酒劲吻你 2020-12-22 12:14

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, i         


        
相关标签:
1条回答
  • 2020-12-22 12:58

    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)
提交回复
热议问题