【问题标题】:'int' object is not callable in python'int' 对象在 python 中不可调用
【发布时间】:2014-11-06 16:06:19
【问题描述】:

我得到了这个,我期待它在打印 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()

我需要修复类本身的问题还是我的方法调用有问题?

【问题讨论】:

    标签: python class methods


    【解决方案1】:

    您在实例上设置了同名属性:

    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"
    

    (我还更正了一个错字;您在一个您打算使用balance 的位置使用了balace)。

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 2017-09-19
      • 2017-12-20
      • 2019-03-13
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多