当前位置: 首页 > 图灵资讯 > 行业资讯> Python描述符中有哪三种方法?

Python描述符中有哪三种方法?

来源:图灵python
时间: 2024-09-09 10:10:30

在我们对描述符有了初步的了解之后,使用方法也是学习描述符阶段的必要路线。本文将讨论三种方法__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 就好了。

以上是Python描述符中的三种方法。了解基本用途后,可以练习不同的方法,以便更好地熟悉这些描述符中的方法。