为什么Python属性不设置属性值

时间:2011-03-27 19:56:36

标签: python properties setter

请考虑以下代码:

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)

2 个答案:

答案 0 :(得分:9)

您需要使用新的样式类(从对象继承)才能使属性工作

class Class(object):
    ...

答案 1 :(得分:1)

如果您只想将您的值作为属性访问,那么仅使用属性就更简单了:

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

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

这不是Java,您可以通过简单的方式访问属性。如果您将来发现需要在属性访问中执行更多逻辑,那么您可以更改类以使用属性。

顺便说一句:Python风格是不对函数和属性使用大写名称,只使用小写名称。