2011-03-27 107 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