调用类成员函数会产生 TypeError [重复]
Posted
技术标签:
【中文标题】调用类成员函数会产生 TypeError [重复]【英文标题】:Calling a class member function gives TypeError [duplicate] 【发布时间】:2016-07-24 14:39:52 【问题描述】:我正在使用一个库,该库具有以下 Python 类代码(由我自己编辑以找到一个最小的工作示例):
class Foo(object):
def __init__(self):
self._bar = 0
@property
def Bar(self):
return self._bar
如果我然后运行以下命令:
foo = Foo()
x = foo.Bar()
我收到一条错误消息:
TypeError: 'int' object is not callable
所以,似乎错误告诉我它认为Bar()
是int
,而不是函数。为什么?
【问题讨论】:
【参考方案1】:foo.Bar
是正确的使用方式
property 将类方法转换为只读属性。
class Foo(object):
def __init__(self):
self._bar = 0
@property
def Bar(self):
return self._bar
@Bar.setter
def Bar(self, value):
self._bar = value
foo = Foo()
print(foo.Bar) # called Bar getter
foo.Bar = 10 # called Bar setter
print(foo.Bar) # called Bar getter
【讨论】:
【参考方案2】:这是一个属性!这意味着当您将其作为属性获取时,它是返回值,如果您希望它成为方法,则不要将其设为属性。
要使用属性,只需使用foo.Bar
,它就会返回值。
【讨论】:
以上是关于调用类成员函数会产生 TypeError [重复]的主要内容,如果未能解决你的问题,请参考以下文章