2

嘿伙计们,所以我在运行此代码时收到此“TypeError:'int' object is not callable”错误,我做了一些研究,我认为这与我的变量命名有关?有人可以向我解释什么是错的吗?

class account(object):
    def set(self, bal):
        self.balance = bal
    def balance(self):
        return balance

这是我的示例运行:

>>> a = account()
>>> a.set(50)
>>> a.balance()
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    a.balance()
TypeError: 'int' object is not callable
4

1 回答 1

13

您正在balance使用实例属性掩盖您的方法balance。重命名一个或另一个。您可以通过在实例属性前面加上下划线来重命名实例属性,例如:

def set(self, bal):
    self._balance = bal

def balance(self):
    return self._balance

实例上的属性胜过类上的属性(数据描述符除外;think propertys)。从类定义文档中:

类定义中定义的变量是类属性;它们由实例共享。实例属性可以在带有 的方法中设置self.name = value。类和实例属性都可以通过符号“<code>self.name”访问,并且以这种方式访问​​时,实例属性会隐藏同名的类属性。

于 2013-04-05T19:24:28.327 回答