2016-04-04 65 views
0

我与它有一个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,而不是一个函数。为什么?

回答

2

这是一个财产!这意味着当你将它作为一个属性获取时,它就是返回值,如果你希望它成为一种方法,那么不要把它作为一个属性。

要使用属性只是使用foo.Bar它会返回值。

2

foo.Bar是使用

特性转换类方法为只读属性的正确方法。

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 
相关问题