知行编程网知行编程网  2022-11-08 18:00 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python描述符中有哪三种方法?的相关知识,包括不属于算法描述方式,以及用三种说明方法写文具这些编程知识,希望对大家有参考作用。

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)在这里可以正常使用。由于这里的描述符是所有者的类属性,如果你使用 self.xxx 来存储属性值,这个属性也会被存储为一个类属性,即你所有的实例都会访问同一个描述符:

class Descriptor(object):
 
    def __init__(self):
        self.d_name = ''
 
    def __get__(self, instance, owner):
        return self.d_name
 
    def __set__(self, instance, name):
        self.d_name = name.title()
 
    def __delete__(self, instance):
        del self.d_name
 
class Person(object):
    name = Descriptor()

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

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

这就是问题所在,如果要将描述符用作实例属性而不是类属性,只需使用实例参数而不是 self 。

以上是 Python 描述符中的三个方法。在了解了基本用法之后,你可以对不同的方法进行练习,以更好地熟悉这些描述符中的方法。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享