python day 2
@property装饰器
之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。如果要做到这点,就可以考虑使用@property包装器来包装getter和setter方法,使得对属性的访问既安全又方便。
案例: 输入三个数字(私有),求三个数字的和,尝试更改其中两个数字
class num(object): def __init__(self,a,b,c): self.__a = a self.__b = b self.__c = c @property def A(self): print(self.__a) @A.setter def A(self,a1): self.__a = a1 @property def B(self): print(self.__b) @B.setter def B(self,b1): self.__b = b1 @property def C(self,c1): print(self.__c) @C.setter def C(self,c1): self.__c = c1 def play(self): print(self.__a + self.__b + self.__c) number = num(1,2,8) number.B = 22 number.C = 988 number.play()
我想变成一棵树,开心时,在秋天开花。伤心时,在春天落叶。