请考虑以下代码:
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)
答案 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风格是不对函数和属性使用大写名称,只使用小写名称。