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 '''