class Cell: #使用@property修饰方法,相当于为改属性设置getter方法 @property def state(self): return self._state #为state属性设置setter方法,这样state属性就变成了读写属性 @state.setter def state(self,value): if 'alive' in value.lower(): self._state = 'alive' else: self._state = 'dead' #使用@property修饰方法is_dead,is_dead()就变成了只读属性 @property def is_dead(self): return not self._state.lower() == "alive" c = Cell() c.state = 'Al' print(c.state) print(c.is_dead)
dead True 请按任意键继续. . .
class Cell: #使用@property修饰方法,相当于为改属性设置getter方法 @property def state(self): return self._state #为state属性设置setter方法,这样state属性就变成了读写属性 @state.setter def state(self,value): if 'alive' in value.lower(): self._state = 'alive' else: self._state = 'dead' #使用@property修饰方法is_dead,is_dead()就变成了只读属性 @property def is_dead(self): return not self._state.lower() == "alive" c = Cell() c.state = 'Alive' print(c.state) print(c.is_dead)
alive False 请按任意键继续. . .
properity()函数的使用格式如下:
properity(fget=None, fset=None, fdel=None, doc=None)
从上面的语法可以看出来,使用property函数的时候可以传入4个参数,但是也可以根据需要传入参数
class Rectangle: def __init__(self,width,height): self.width = width self.height = height def setsize(self,size): self.width , self.height = size def getsize(self): return self.width,self.height def delsize(self): self.width, self.height = 0,0 size = property(getsize,setsize,delsize,"用于描述矩形大小的属性") #访问size属性的说明文档 print(Rectangle.size.__doc__) #通过内置的help函数来访问size属性的说明文档 help(Rectangle.size) rect = Rectangle(3,4) print(rect.size)#3,4 rect.size = 33,44 print(rect.width)#3 print(rect.height)#4 del rect.size print(rect.width)#0 print(rect.height)#0
用于描述矩形大小的属性 Help on property: 用于描述矩形大小的属性 (3, 4) 33 44 0 0 请按任意键继续. . .