getter和setter
1.getter 和 setter的作用
getter作用:在获取某个属性值之前做别的事情,就给这个属性添加getter
setter作用:如果在给属性赋值之前想要做别的事情,就给这个属性添加setter
2.怎么添加getter和setter
1)getter
第一步:在需要添加getter的属性名之前加_
第二步:定义getter对应的函数(1.需要@property装饰器,2。函数名就是不带_的属性名 3. 函数需要一个返回值)
第三步:获取属性值的通过:对象.不带下划线的属性名(本质就是在调用getter对应的函数,取到属性值就是函数的返回值)
2)setter
如果想要给属性添加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