12.7 类的property/setter/delter特性
装饰器加到函数上,不能加到属性上
class People():def __init__(self,height,weight):self.height=heightself.weight=weight@property #获取值的时候触发,你不需要加括号使用不能加参数def bmi(self): return self.weight/(self.height**2)@bmi.setter #修改bmi的时候触发,必须加参数def bmi(self,value):# raise '不能修改bmi' #抛异常print('不能修改bmi')@bmi.deleter #删除时候触发,不需要加参数def bmi(self):print('不能删除')#调用方法不加()
peo=People(1.8,70)
print(peo.bmi) #bmi是方法但是加了property装饰器,就不需要加括号
#输出:21.604938271604937#修改
peo.bmi=22 #修改时候打印setter
#输出:不能修改bmi#删除
del peo.bmi
#输出:不能删除
