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 '''
原文地址:https://www.cnblogs.com/themost/p/6443008.html