zoukankan      html  css  js  c++  java
  • property()函数

     1 class C:
     2     def __init__(self, size=10):
     3         self.size = size
     4 
     5     def getXSize(self):
     6         return self.size
     7 
     8     def setXSize(self, value):
     9         self.size = value
    10 
    11     def delXSize(self):
    12         del self.size
    13 
    14         # 此处应该补充一句代码,程序才能正常运行
    15       x = property(getSize,setSize,delSize)
    16 
    17 >>> c.x
    18 10
    19 >>> c.x = 12
    20 >>> c.x
    21 12
     1 #property(fget = None,fset = None,fdel = None,doc = None)
     2 #property()的作用是把方法当做属性来访问,从而提供更加友好的访问方式
     3 #官方帮助文档代码:
     4 class C:
     5     def __init__(self):
     6         self.x = None
     7 
     8     def getx(self):
     9         return self._x
    10     
    11     def setx(self,value):
    12         self._x = value
    13         
    14     def delx(self):
    15         del self._x
    16 
    17     x = property(getx,setx,delx,"I'm the 'x' property.")
    18 
    19 '''
    20 property()返回一个可以设置属性的属性,当然,如何设置属性还是需要我们
    21 人为来写代码。第一个参数是获得属性的方法名(例子中是getx),第二个方法
    22 是设置属性的方法名(getx),第三个参数是删除属性的方法名(delx)
    23 
    24 property()有什么作用呢,举个例子,在上面的例题中,我们为用户提供setx方法名称
    25 来设置_x,提供getx方法名称来获取属性,但是有一天你心血来潮,突然想对程序
    26 进行大改,可能你需要把setx 和getx 修改为set_x,get_x,那你不得不修改用户调用的接口
    27 这样的体验就非常不好。
    28 
    29 有了property()所有的问题就迎刃而解了,因为像上边一样,我们为用户访问_x属性提供了x
    30 属性,无论我们内部怎么改动,只要相应的修改peoperty()参数,用户仍然只需要去操作x
    31 属性即可。
    32 
    33 '''
  • 相关阅读:
    Hive(二)CentOS7.5安装Hive2.3.3
    Hive(一)Hive初识
    CentOS7.5搭建ELK6.2.4集群及插件安装
    开发工具之Spark程序开发详解
    Java多线程编程
    数据迁移之Sqoop
    CentOS7.5之Sqoop1.4.7的安装使用
    Hadoop案例(十一)MapReduce的API使用
    Hadoop案例(十)WordCount
    BSScrollViewEdgePop
  • 原文地址:https://www.cnblogs.com/themost/p/6443008.html
Copyright © 2011-2022 走看看