首页IT科技python编码规范的重要性(Python描述符中有哪三种方法?)

python编码规范的重要性(Python描述符中有哪三种方法?)

时间2025-09-19 10:03:32分类IT科技浏览4425
导读:我们在对描述符有了初步认识后,那么对于其中方法的使用,也是学习描述符阶段的必备路线。本篇所要讲述的是三种方法__get__( ,__set__( ,和__delete__( 。这里要区别于我们所学习的函数,有下划线的表示为一种特殊方法。下面我们就Python描述符中的三种方法带来详解。...

我们在对描述符有了初步认识后                ,那么对于其中方法的使用                       ,也是学习描述符阶段的必备路线                。本篇所要讲述的是三种方法__get__()        ,__set__()            ,和__delete__()                       。这里要区别于我们所学习的函数                       ,有下划线的表示为一种特殊方法        。下面我们就Python描述符中的三种方法带来详解            。

1               、方法说明

一般来说,描述符是带有“绑定行为                ”的对象属性,它的属性访问已经被描述符协议中的方法覆盖了                       。这些方法是__get__(),__set__(),和__delete__().

其中instance的参数表示实例化的对象            ,owner代表实例属于的类            。

描述符必须定义在类属性中        ,而不能定义在构造函数中        。

2                        、实例

object.__get__(self,instance,owner)

object.__set__(self,instance,value)

object.__delete__(self,instance)

上面的参数里                       ,self 都是指描述符本身                ,owner 是包含描述符为某个属性的那个对象    ,instance 是 owner 的实例                       。这些参数由解释器自动传递                       ,没有就传 None                。函数体由用户自定义                   ,此处可以妥善使用三个参数(self, instance, owner)    。由于这里的描述符是 owner 的类属性,所以如果你使用 self.xxx 来存储属性值的话                    ,这个属性也会被存成类属性                       ,即你所有的实例都将访问同一个描述符:

classDescriptor(object): def__init__(self): self.d_name= def__get__(self,instance,owner): returnself.d_name def__set__(self,instance,name): self.d_name=name.title() def__delete__(self,instance): delself.d_name classPerson(object): name=Descriptor()

这里我们使用描述符的方式    ,是保存一个字符串                ,并把首字母大写                       ,实际描述符可以做得更多                       。运行如下:

>>>a=Person() >>>a.name=adam >>>a.name Adam >>>b=Person() >>>b.name Adam

这就是问题所在        ,如果想把描述符用作实例属性而不是类属性的话            ,使用 instance 参数代替 self 就好了                   。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
layui富文本框(springboot+layui 整合百度富文本编辑器ueditor入门使用教程(踩过的坑))