getter作用:在获取某个属性值之前做别的事情,就给这个属性添加getter setter作用:如果在给属性赋值之前想要做别的事情,就给这个属性添加setter
第一步:在需要添加getter的属性名之前加_ 第二步:定义getter对应的函数(1.需要@property装饰器,2。函数名就是不带_的属性名 3. 函数需要一个返回值) 第三步:获取属性值的通过:对象.不带下划线的属性名(本质就是在调用getter对应的函数,取到属性值就是函数的返回值)
如果想要给属性添加setter,必须先给属性添加getter 第一步:添加getter 第二步:定义setter对应的函数(1.需要@getter函数名.setter 装饰器 2.函数名就是不带下划线的属性名 3. 需要一个参数不需要返回值,这个参数就是尝试给属性赋的值) 第三步:给属性赋值:对象.不带下划线的属性名 = 值 (本质就是在调用setter对应的函数)
class Rect: def __int__(self, length=0, width=0): self.length = length self.width = width self._area = length*width @property def area(self): self._area = self.width * self.length return self._area @area.setter def area(self,value): raise ValueError r1 = Rect(4, 5) # print(r1.area) # 不能让矩形直接修改面积的属性值 # r1.area = 100 # print(r1.__dict__) # r1.width = 10 # print(r1.area) # r1,length = 10 # print(r1.area) # r1.area = 199