制心一处,无

1.简述描述符

当一个类中,包含了三个魔术方法(‘get,set,delete‘)之一或者全部时,那么这个类就称为描述符类

作用:
描述符的作用就是对一个类中的某个成员进行一个详细的管理操作(获取,赋值,删除)
描述符就是代理了一个类中的成员的操作,描述符属于类,只能定义为类的属性

一个类中成员的值时另一个描述符类的对象
那么当对这个类的成员进行操作时,可以理解为对另一个对象的操作

简单来说就是干代理的事

#定义一个普通的类
class Person():
#把类中的成员属性交给一个描述符类来实现
_name = PersonName()
#此处将name属性交给了PersonName这个描述符类_

#定义描述符类
class PersonName():
name = ‘周杰伦’
def
get(self, instance, owner):
return self.
name
def set(self, instance, value):
self.name = value
def
delete(self, instance):
del self.
name

#实例化对象
_zjl = Person()
#输出
print(zjl.name)
#修改
zjl.name = ‘昆凌’
print(zjl.name)
#删除
_del zjl.name
print(zjl.name)

2.应用案例

#定义描述符类
class Score():

  1. __score = 0<br /> **def **__get__(self, instance, owner):<br /> **return **self.__score<br /> **def **__set__(self, instance, value):<br /> **if **value >= 0 **and **value <= 100:<br /> self.__score = value<br /> **else**:<br /> print(**'不符合要求'**)

#定义一个学生类,需要记录 学员的id,名字,分数
class Student():
score = Score()
def init(self,id,name,score):
self.id = id
self.name = name
#检测分数范围
if score >= 0 and score <= 100:
self.score = score

  1. **def **returnMe(self):<br /> info = **f'''<br /> 学员编号:{**self.id**}<br /> 学员姓名:{**self.name**}<br /> 学员分数:{**self.score**}<br /> '''<br /> **print(info)

_#实例化对象
_stu = Student(21,21,21)
stu.score = 22
stu.returnMe()

3.描述符的格式

class ScoreMange():
def get(self, instance, owner):
pass
def
set(self, instance, value):
pass
def
delete(self, instance):
**pass

class **Student():
score = ScoreMange()