浅用描述符,


  可以理解为property方法的一种进阶,都可以用来创建一种新形式的实例属性,即在实例属性值的获取和设定上,增加额外的处理事务,such as:类型检查、验证

  重写三个属性访问方法,其中__delete__方法是否重写取决需求

  在类层次上引用描述符,即该类遵从描述符协议

 1 class Check:
 2     def __init__(self, name):
 3         self.name = name
 4 
 5     def __get__(self, instance, owner):
 6         if instance is None:
 7             return self
 8         return instance.__dict__[self.name]
 9 
10     def __set__(self, instance, value):
11         print(">>开始检查字段:{},是否为空".format(self.name))
12         if not value:
13             raise TypeError(">>字段:{}为空".format(self.name))
14         print(">>字段:{}空值校验通过".format(self.name))
15         instance.__dict__[self.name] = value
16 
17     def __delete__(self, instance):
18         del instance.__dict__[self.name]
19 
20 
21 class Valley:
22     name = Check("姓名")
23     age = Check("年纪")
24 
25     def __init__(self):
26         self.name = 'shixiaogu'
27         self.age = ""

 

只有永不遏止的奋斗,才能使青春之花,即便是凋谢,也是壮丽地凋谢

评论关闭