标签:int delete 没有 操作 实现 __init__ name div people
# 描述符,相当于一个代理 class Str: def __init__(self,name): self.name = name # 取值操作时使用 # instance:传入对象 # owner:对象的类 def __get__(self, instance, owner): print("get--->",instance,owner) # 返回对象的name属性 return instance.__dict__[self.name] # 赋值操作时使用 def __set__(self, instance, value): print("set-->",instance,value) # 设置属性 instance.__dict__[self.name] = value # 删除操作时使用 def __delete__(self, instance): print("delete——--》",instance) instance.__dict__.pop(self.name) class People: name=Str(‘name‘) print(name) def __init__(self,name,age,salary): self.name=name print(self.name) self.age=age self.salary=salary p1 = People(‘wangconng‘,21,-1000) # 调用 print(p1.__dict__) p1.name # 赋值 print(p1.__dict__) p1.name = ‘cong‘ print(p1.__dict__) #删除 print(p1.__dict__) del p1.name print(p1.__dict__) # 描述符分为两种 # 数据描述符:至少实现了__set__(),__get__() # 非数据描述符:没有实现__set__() # 类操作属性>数据描述符 # 数据描述符 > 对象操作属性 # 对象描述符 > 非数据属性 # 非数据属性 > 找不到
标签:int delete 没有 操作 实现 __init__ name div people
原文地址:https://www.cnblogs.com/cong12586/p/11372332.html