内容注释都在代码里边
#描述符Str class Str: def __get__(self, instance, owner): print(',使用get方法Str调用') def __set__(self, instance, value): print('使用set方法Str设置...') def __delete__(self, instance): print('使用delete方法Str删除...') #描述符Int class Int: def __get__(self, instance, owner): print('使用set方法使用get方法Int调用') def __set__(self, instance, value): print('使用set方法Int设置...') def __delete__(self, instance): print('使用delete方法Int删除...') class People: name=Str() #新式类中类属性字典中应用另一个类 age=Int() #要求 另一个类中至少有get set 方法 def __init__(self,name,age): #name被Str类代理,age被Int类代理, self.name=name self.age=age #何地?:定义成另外一个类的类属性 #何时?:且看下列演示 p1=People('apple',18) #数据描述符的优先级大于实例属性 # #描述符Str的使用 # p1.name # p1.name='meil' # del p1.name # # #描述符Int的使用 # p1.age # p1.age=18 # del p1.age # # #我们来瞅瞅到底发生了什么 print(p1.__dict__) #{}发现实例的属性字典中为空 print(People.__dict__) # 'age': <__main__.Int object at 0x00000268757E2828> age/name #对应的是一个int类中的一个对象