参考

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

最新文章

  1. 对copy、mutableCopy理解
  2. jQuery.proxy()函数
  3. 工作流学习——Activiti流程变量五步曲 (zhuan)
  4. 剑指offer系列25---构建乘积数组
  5. cocos2d触摸事件处理机制(2.x和3.x变化)
  6. python之 模块与包
  7. 关于Promise层层嵌套可读性差问题
  8. DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
  9. Magic CSS3 一款独特的CSS3动画特效包
  10. MFC笔记2
  11. day41 mysql详细操作
  12. 命令查看WebSphere MQ运行状态
  13. 【多线程】java多线程实现生产者消费者模式
  14. SIP SDP Profile-level-id解析
  15. lucene教程--全文检索技术
  16. Android中Bitmap和Drawable详解
  17. 完全国人自主研发原创的智能软件路由器BDS即将发布,附带企业服务总线ESB功能
  18. C#高级编程五十七天----位数组
  19. Linux mkdir 如何递归创建目录?
  20. CF1083A The Fair Nut and the Best Path

热门文章

  1. Entity Framework Code-First(2):What is Code-First?
  2. 面试问题 - SQL 中存储过程与函数的区别
  3. 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
  4. Entity Framework 分页处理
  5. code first迁移和部署
  6. Linux之shell备份数据库
  7. sqlalchemy字段与mysql数据库字段对应问题
  8. Fiddler-抓Android和IOS包
  9. giihub上的关于js的43道题目
  10. shiro 重定向 后 带有 sessionId 的 解决 办法