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是装饰器,相当于穿了一件衣服