2011-03-27 108 views
1

考慮這下面的代碼:爲什麼不Python的屬性設置屬性值

class Class: 
    def __init__(self): 
     self._value = False 
    def GetValue(self): 
     return self._value 
    def SetValue(self, val): 
     self._value = val 
    Value = property(GetValue, SetValue) 

c = Class() 
print c._value, c.Value 
False False 
c.Value = True 
print c._value, c.Value 
False True 

爲什麼沒有物業叫我的功能? (我在Windows上運行的Python 2.6.5)

回答

1

如果你只是想訪問你的價值作爲屬性,僅僅使用一個屬性就簡單多了:

class Class(object): 
    def __init__(self): 
     self.value = False 

c = Class() 
c.value    # False 
c.value = True 
c.value    # True 

這不是Java,你可以簡單地訪問屬性的簡單方法。如果將來您發現需要在屬性訪問中執行更多邏輯,則可以將該類更改爲使用屬性。

順便說一句:Python風格是不使用uppercased名稱的功能和屬性,只有小寫的名稱。

9

您需要使用新的樣式類(從object繼承)物業工作

class Class(object): 
    ... 
+1

一般的描述符,其中'屬性'是一個。 – 2011-03-27 20:00:15