property
先看私有属性get和set方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Test(object): def __init__(self): self.__num = 100 def getNum(self): return self.__num def setNum(self,newNum): self.__num = newNum
# 类 Test有私有属性 num (__属性名,代表私有属性) # 通过get 和 set方法 可以对私有属性进行操作 t = Test() print(t.getNum()) t.setNum(50) print(t.getNum())
|
需求来了
- t.num = 100 就调用设置 __num的值为100
- print(t.num)的时候就直接取__num的值
1 2 3 4 5 6 7 8
| class Test(object): def __init__(self): self.__num = 100 def getNum(self): return self.__num def setNum(self,newNum): self.__num = newNum num = property(getNum,setNum)
|
1 2
| t.num = 9 相当于 t.setNum(9) t.num 相当于 t.getNum()
|
如果你在定义类的时候设置了一个私有属性,同时设置了get和set方法,并设置property
- 相当于把方法进行了封装,开发者在对属性设置数据的时候变得方便
设置property的另一种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Test(object): def __init__(self): self.__num = 100
@property def num(self): print("----getter----") return self.__num
@num.setter def num(self, newNum): print("----setter----") self.__num = newNum
t = Test()
t.num = 200 #相当于调用了 t.setNum(200)
print(t.num) #相当于调用了 t.getNum()
|