一、property引入

为了使对象的属性不暴露给调用者和进行属性值检查,设置了访问属性的接口函数,使用函数访问属性,并可以在函数内部检查属性。

 >>> class Student(object):
   def get_score(self):
   return self._score
  def set_score(self, value):
  if not isinstance(value, int):
   raise ValueError('score must be an integer!')
   if value < or value > :
   raise ValueError('score must between 0 ~ 100!')
  self._score = value >>> s = Student()
>>> s.set_score()
>>> s.get_score()

这样每次访问属性的时候,都要访问函数,相比较之前直接访问属性的方式,变得麻烦了。property可以解决这个麻烦,虽然还是函数,但是可以像属性一样访问。

二、property装饰器方法:

>>> class C:
  def __init__(self):
  self.__x = None
   @property
  def x(self):
   return self.__x
  @x.setter
  def x(self,value):
  self.__x=value
   @x.deleter
   def x(self):
   del self.__x >>> c = C()
>>> c.x
>>> c.x =
>>> c.x

三、property函数方法:

>>> class C:
def __init__(self):
self.__x = None
def getx(self):
return self.__x
def setx(self, value):
self.__x = value
def delx(self):
del self.__x
x = property(fget=getx,fset=setx,fdel=delx, doc='') >>> c = C()
>>> c.x =
>>> c.x >>> del c.x
>>> c.x
Traceback (most recent call last):
File "<pyshell#64>", line , in <module>
c.x
File "<pyshell#59>", line , in getx
return self.__x
AttributeError: 'C' object has no attribute '_C__x'

最新文章

  1. Android热修复技术选型(不在市场发布新版本的情况下,直接更新app)
  2. CentOS关闭火狐浏览器Flash过期提示
  3. 20145225《Java程序设计》 2015—2016年学期课程总结
  4. WPF后台设置xaml控件的样式System.Windows.Style
  5. 页面间(窗口间)的取值赋值及获取iframe下的window对象
  6. 搭建SpringMVC+MyBatis开发框架二
  7. linux进程调度之 FIFO 和 RR 调度策略---SYSTEMTAP
  8. S-CMS企建v3二次SQL注入
  9. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组
  10. java:try...catch...finally
  11. Unity 获取指定资源目录下的所有文件
  12. 结合MongoDB开发LBS应用(转)
  13. Redis与RabbitMQ作为消息队列的比较
  14. mongodbtemplate配置
  15. arduino IO口
  16. CSS选择器-常用搜集
  17. Go语言入门之切片的概念
  18. 深度学习基础系列(一)| 一文看懂用kersa构建模型的各层含义(掌握输出尺寸和可训练参数数量的计算方法)
  19. ECharts学习总结(二):标签式单文件引入echarts的方法
  20. react native android 应用状态(前端或后台)的判断

热门文章

  1. POJ 2348 Euclid&#39;s Game【博弈】
  2. poj——2771 Guardian of Decency
  3. uva 10559
  4. 某考试 T1 table
  5. Java实验--继承与多态
  6. MySQL查询count(*)、count(1)、count(field)的区别收集
  7. python绘图入门
  8. iOS iOS8中 问题&amp;quot;registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later&amp;quot; 解决方式
  9. CF 234 C Weather(粗暴方法)
  10. 无限级分类Asp.net Mvc实现