python property使用示例,pythonproperty,假设类的某属性,你不愿意
python property使用示例,pythonproperty,假设类的某属性,你不愿意
假设类的某属性,你不愿意它被悄悄地访问或改写了,希望它被访问、赋值或删除时会得到一些通知,那么我们可以使用函数property()。参数原型是:property([fget[, fset[, fdel[, doc]]]])它返回新式类(继承了object的类)的一个属性,其中:fget是属性被访问时执行的方法,fset:属性被赋值时执行的方法,fdel:属性被删除时执行的方法。
代码实例如下:
class C(object): def __init__(self): self._x = None def getx(self): print "You get my x." return self._x def setx(self, value): print "You set my x." self._x = value def delx(self): print "You del my x." del self._x x = property(getx, setx, delx)if __name__ == "__main__": c = C() c.x = 10 print c.x del c.x
执行结果:
You set my x. You get my x. 10 You del my x.
可见,在访问对象属性x的时候, 对应执行了property(getx, setx, delx) 所指定方法而做出一些额外的事情。另外,python提供了一个property的装饰器,上述代码 x = property([fget[, fset[, fdel[, doc]]]])可以被分化,代码如下:
class C(object): def __init__(self): self._x = None @property def x(self): print "You get my x." return self._x @x.setter def x(self,value): print "You set my x." self._x = value @x.deleter def x(self): print "You del my x." del self._xif __name__ == "__main__": c = C() c.x = 10 print c.x del c.x
转载自http://www.yabogo.com/?p=676
相关内容
- python使用smtplib发邮件(带附件)代码,pythonsmtplib,简单
- python实现带参数的decorator,pythondecorator,python的decor
- 导出邮箱里的联系人:支持Gmail,126,网易,搜狐,H
- python 把文件夹压缩成tar,pythontar,import tarfi
- python控制shell执行时间,若超时则强行推出,pythonshel
- python登录Discuz!类型论坛的通用代码,pythondiscuz,[Python
- 使用python杀死进程,python杀死进程,使用python脚本根据
- python实现的线程池,python实现线程池,python实现的线程池
- python显示用户友好的时间,python用户,def time_spa
- 用Python在windows命令行输出彩色字符,python命令行,[Pyt
评论关闭