'int'对象不可调用错误python

use*_*577 2 python int

嘿家伙所以我得到这个"TypeError:'int'对象不可调用"错误,当我运行此代码时,我做了一些研究,我认为这是我的变量命名的东西?有人可以向我解释有什么问题吗?

class account(object):
    def set(self, bal):
        self.balance = bal
    def balance(self):
        return balance
Run Code Online (Sandbox Code Playgroud)

这是我的示例运行:

>>> 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 13

您正在balance使用实例属性屏蔽您的方法balance.重命名其中一个.您可以通过使用下划线预先挂起实例属性来重命名该实例属性,例如:

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

def balance(self):
    return self._balance
Run Code Online (Sandbox Code Playgroud)

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

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