python property用法
2024-08-31 22:07:02
参考
http://openhome.cc/Gossip/Python/Property.html
http://pyiner.com/2014/03/09/Python-property.html
在Python中property()是一个内建函数,创建并返回一个property对象。函数的定义如下。
property(fget=None, fset=None, fdel=None, doc=None)
fget是获取属性的值的函数,fset是设置属性值的函数,fdel是删除属性的函数,doc是一个字符串(like a comment).从实现来看,这些参数都是可选的,所以可以向下面这样简单的创建一个property对象。
property()
<property object at 0x0000000003239B38>
property有三个方法getter(), setter()和delete() 来指定fget, fset和fdel。
一般写法
class Ball:
def __init__(self, radius):
if radius <= 0:
raise ValueError('必須是正數')
self.__radius = radius
def getRadius(self):
return self.__radius
def setRadius(self, radius):
self.__radius = radius
def delRadius(self):
del self.__radius
radius = property(getRadius, setRadius, delRadius, 'radius 特性說明')
#output
ball = Ball(1.23)
print ball.radius
ball.radius = 2.31
print ball.radius
装饰器写法
class Ball:
def __init__(self, radius):
if radius <= 0:
raise ValueError('必須是正數')
self.__radius = radius
@property
def radius(self):
return self.__radius
@radius.setter
def radius(self, radius):
self.__radius = radius
@radius.deleter
def radius(self):
del self.__radius
最新文章
- 对copy、mutableCopy理解
- jQuery.proxy()函数
- 工作流学习——Activiti流程变量五步曲 (zhuan)
- 剑指offer系列25---构建乘积数组
- cocos2d触摸事件处理机制(2.x和3.x变化)
- python之 模块与包
- 关于Promise层层嵌套可读性差问题
- DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
- Magic CSS3 一款独特的CSS3动画特效包
- MFC笔记2
- day41 mysql详细操作
- 命令查看WebSphere MQ运行状态
- 【多线程】java多线程实现生产者消费者模式
- SIP SDP Profile-level-id解析
- lucene教程--全文检索技术
- Android中Bitmap和Drawable详解
- 完全国人自主研发原创的智能软件路由器BDS即将发布,附带企业服务总线ESB功能
- C#高级编程五十七天----位数组
- Linux mkdir 如何递归创建目录?
- CF1083A The Fair Nut and the Best Path