属性property
1 私有属性添加getter和setter方法
class Test(): def __init__(self): self.__num = 10 #私有属性 def setter(self,num): self.__num = num def getter(self): return self.__num
2 使用property升级getter和setter方法
使用property的好处是等到我们以后想调用属性的setter和getter的方法时可以直接通过
实例名.属性 来代替实例名.setter和getter方法
class Test(): def __init__(self): self.__num = 10 #私有属性 def setter(self,num): self.__num = num def getter(self): return self.__num num = property(getter,setter)
总结
这样做的好处不仅写的简单而且可以将私有的变成类似共有的,相当于把方法进行了封装。开发者在对属性设置数据的时候更加方便,目的在于外部访问私有属性的时候比较的费劲(setter和getter),此时通过property创建了一个变量,它把setter和getter进行了封装
3. 使用property取代getter和setter方法
@property
成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用
- 将方法转换为只读
- 重新实现一个属性的设置和读取方法,可做边界判定
class Money(object): def __init__(self): self.__num = 0 @property def num(self): return self.__num @num.setter def num(self, value): self.__num = value
@property是装饰器,相当于穿了一件衣服