2016-04-04 104 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 
相關問題