浅用描述符

  可以理解为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 = ""
复制代码

 

posted on   默玖  阅读(20)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示