多态property装饰器--day25

property装饰器

当一些属性得值,不是固定的而是通过计算得来的时候,我们必须增加方法才能完成计算
但是一旦使用方法后该属性的访问就变成了方法的调用,很明显很明显与其他的属性访问方式不同,这样给使用者造成了迷惑
所以需要将这个方法伪装成普通属性,这就用到了property
property可以将方法伪装成属性,利用这个特点,我们也可以将其使用到封装中
之前没有这个装饰器我们需要为私有的属性,提供两个方法,但是这样一来方位私有属性时的方法就是发生了变化
这时候就可以使用porperty来进行伪装,使得访问私有属性与访问普通属性的方式一致
另外 property还提供了 setter(用于修改属性的值) 和 deleter(删除属性的值)
class Student:
def __init__(self,name,sex,idCard):
self.name = name
self.sex = sex
self.__idCard = idCard

def get_idCard(self):
return self.__idCard

def set_idCard(self,new_id):
self.__idCard = new_id

@property # 需要掌握
def idCard(self):
return self.__idCard


@idCard.setter #修改属性的值
def idCard(self,new_id):
self.__idCard = new_id

@idCard.deleter # 删除属性
def idCard(self):
print("身份证属性被删除了.....")
del self.__idCard


-------------------------------------------------------------------

posted @ 2018-12-18 15:39  WenChen-0o0  阅读(118)  评论(0编辑  收藏  举报