首页 > 编程语言 > 详细

python描述器

时间:2019-01-12 18:52:28      阅读:34      评论:0      收藏:0      [点我收藏+]

标签:per   校验   签名   icm   进行   ati   个数   函数   覆盖   

描述器的表现:用到三个魔术方法:__get__()、__set__()、__delete__()

方法签名如下:

object.__get__(self,instance,owner)

object.__set__(self,instance,value)

object.__delete__(self,instance)

self指代当前实例,调用者;instance是owner的实例;owner是属性所属的类

python中,一个类实现了__get__、__set__、__delete__三个方法中的任何一个方法,就是描述器,如果仅实现了__get__,就是非数据描述器,同时实现了__get__、__set__就是数据描述器

描述器在python中应用非常广泛,包括staticmethod()和classmethod()都实现为非数据描述器,因此,实例可以重新定义和覆盖方法,这允许单个实例获取与同一类的其他实例不同的行为

property()函数实现为一个数据描述器,因此,实例不能覆盖属性的行为

例一:使用描述器实现staticmethod装饰器

技术分享图片

技术分享图片

例二、使用描述器实现classmethod装饰器

技术分享图片

技术分享图片

例三、Person类的实例,实现对其属性name,age进行数据校验

技术分享图片

技术分享图片

 

python描述器

标签:per   校验   签名   icm   进行   ati   个数   函数   覆盖   

原文:https://www.cnblogs.com/s-p-l/p/10260624.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 designnerd.net 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号