什么是描述符?
描述符是一种具有“捆绑行为”的对象属性。
访问(获取、设置和删除)它的属性时,实际是调用特殊的方法(get(),set(),delete())。
也就是说,如果一个对象定义了这三种方法的任何一种,它就是一个描述符。
描述符类的三种定义方式:
1.运用魔法方法,定义描述符类。
#self 描述符对象。instance被管理成员的类的对象。
#owner被管理成员的类。value 要设置的值。
class StudentManage():
__score = None
def __get__(self, instance, owner):
return self.__score
def __set__(self, instance, value):
self.__score = value
def __delete__(self, instance):
del self.__score
class Student():
score = ScoreManage()
2.使用 property() 函数实现。
class Student():
__score = None
# 在需要被管理的类中 直接定义类似下面三个方法
def getscore(self):
return self.__score
def setscore(self,value):
self.__score = value
def delscore(self):
del self.__score
score = property(getscore,setscore,delscore)
3.使用 @property 装饰器语法实现。
class Student():
__score = None
@property
def score(self): #get
return self.__score
@score.setter
def score(self,value): #set
self.__score = value
@score.deleter
def score(self): #delete
del self.__score
调用方式
sd=Student()
sd.score=100 #赋值
print(sd.score) #获取
del sd.score #删除