描述符中的组成:
临时变量 自己定义
_ _get__ 管理获取值
__set__ 管理设置值
__delete__ 管理删除值
描述符的第一种格式:
描述符的类
被管理的成员的类
描述符的第二种格式:
描述符融合到被管理的成员类当中(使用了property函数)
例:
#声明一个邮箱类
class Email:
#username = '匿名用户' #要管理的用户名
isallowdel_username = False#是否允许删除的标志
#------------描述符使用的区域 start--------------
#初始化方法
def __init__(self):
self.tmpvar = '匿名用户'
#管理获取的描述符的方法
def getusername(self): #只有一个self
#设置相关管理
result = self.tmpvar[0] + '*' + self.tmpvar[-1]
return result
#管理描述符设置的方法
def setusername(self,val):
#管理设置操作
self.tmpvar = val + 'sama'
#管理描述符删除的方法
def deleteusername(self):
#管理删除操作
if self.isallowdel_username == True:
del self.tmpvar
# ------------描述符使用的区域 end--------------
# 将成员交接给描述符管理(函数名自己定义)
username = property(getusername,setusername,deleteusername)
# 在类外部实例化对象
mail = Email()
# 获取用户名
#print(mail.username)
# 设置用户名
#mail.username = '王老五'
#print(mail.username)
# 删除用户名
print(mail.username)
del mail.username
print(mail.username)
描述符的第三种格式:
描述符融合到被管理的成员类当中(使用装饰器语法组合@property)
例:
class Email:
#成员属性
#username = '匿名用户' #将被描述
def __init__(self):
self.tmpvar = '匿名用户'
@property #将用户名username交给描述符管理 【默认用作获取的方法】
def username(self):
#管理获取操作
result = self.tmpvar[0] + '*' + self.tmpvar[-1]
return result
@username.setter
def username(self,val):#用于设置的方法
#管理设置操作
self.tmpvar = val
@username.deleter
def username(self):#用于删除的方法
del self.tmpvar
#实例化对象
mail = Email()
#获取操作
print(mail.username)
#设置操作
mail.username = '不灵不灵的闪闪发光'
#print(mail.username)
#删除操作
print(mail.username)
del mail.username
#print(mail.username)