Python 中的 property 函数
在 Python 中有这么一个 property 函数,一直没弄明白是怎么回事儿,今天就好好的研究了一下下,我的理解是这样的,如下面这一段代码:
class C(object):
def __init__(self): self._x = 1
def getx(self): return self._x * 2
def setx(self,value): self._x = value/2
def delx(self): self._x = 1
x = property(getx,setx,delx,"I'm the property.")
上面这一段代码的最后一行用了一个 @property@ 函数,这一段代码的意思是:当我们给 class: C(object) 的实例的成员 x 赋值时,需要首先调用 setx(self,value) 函数,取其值时,需要先调用getx(self) 函数,删除它时,需要先调用 delx(self) 函数。
所以我们会有下面这样的运行结果:
>>> c = C()
>>> c.x
2
>>> c.x = 3
>>> c.x
2
>>> c._x
1
>>> del c.x
>>> c.x
2
>>>
我创建了一个 C 的实例,名为 ”c“,当我去调用 c.x 时,首先运行了 getx 函数,所以返回值是 1 * 2 ,也就是 2 了,而我给 c.x 赋值为 3,这个时候会运行 setx 函数,所以这个时候 c._x 的值变为了 3 / 2 ,其运算结果是 1,所以我再一次取 c.x 的值时,出现的并不是 3,而是 1 * 2 = 2。而我最后面删除 c.x ,但是并没有删除掉,而是重新为 c._x 赋值。
评论已关闭