property
2018-08-07 10:49 冻奶香甜玉米片 阅读(144) 评论(0) 编辑 收藏 举报把函数属性封装成数据属性,让调用者感觉不出是使用了方法(因为没有括号)
把通过计算得出的结果封装为数据属性,使用户访问不用加()
class People: def __init__(self,name,weight,height): self.name = name self.weight = weight self.height = height @property def bmi(self): return self.weight/(self.height ** 2)
这样可以使用户访问时直接p.bmi,不用p.bmi()
之所以不定义为对象的属性,是因为写在__init__里,bmi会变成定值,即使以后修改身高,体重,bmi也不会改变了
还有@.setter 和@ .deleter (.前面的是被property装饰的函数)
这样在赋值操作时就会触发@.setter
del时就会触发@ .deleter
对象添加key直接 对象.newkey = val