- 私有属性添加getter和setter方法
例:
class Test(object):
def __init__(self):
self.__num =100
def setNum(self,newNum):
self.__num = newNum
def getNum(self):
return self.__num
t = Test()
print(t.getNum())
t.setNum(10)
print(t.getNum())
这样我们就可以完成对私有方法和属性的修改和读取了
- 使用property升级getter和setter方法
程序修改如下:
class Test(object):
def __init__(self):
self.__num =100
def setNum(self,newNum):
self.__num = newNum
def getNum(self):
return self.__num
【这里是添加的部分】
num = property(getNum,setNum)
t = Test()
print(t.getNum())
t.setNum(10)
print(t.getNum())
【这里是添加的部分】
print('@' * 20)
t.num = 80 #相当于调用了 t.setNum(80)
print(t.num()) #相当于调用了 t,getNum()
【注】
t.num 到底是调用getNum() 还是setNum(),需要根据实际的场景判断
若是给t.num赋值,一定是调用了setNun()
若是获取t.num的值,就是调用了getNum()
**property的作用:**相当于把方法进行了封装,开发者在对属性设置数据时会更方便
- 利用装饰器使用property
修改如下:
class Test(object):
def __init__(self):
self.__num =100
@property
def num(self):
print('-----setter-----')
return self.__num
@num.setter
def num(self, newNum):
print('-----setter-----')
self.__num = newNum
t = Test()
print('@' * 20)
t.num = 80 #相当于调用了 t.setNum(80)
print(t.num) #相当于调用了 t.getNum()