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