千锋教育-做有情怀、有良心、有品质的职业教育机构

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

来源:千锋教育
发布时间:2023-11-12 21:12:36
分享

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就好了。

以上就是Python描述符中的三种方法,在了解基本的使用后,可以对不同的方法做一个练习,以便更好的熟悉这些描述符中的方法。更多Python学习教程请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python如何对Python数据表进行检查 如何对Python数据表进行检查在python中处理的数据量通常会比较大,例如千万级数据,而且我们不能一目了然地了解整个数据表,而且必须通过某种方法获得关于数据表的关键信息。DataTableChec
  • Python itemgetter函数怎么用? pythonitemgetter函数怎么用?Operator模块中也有一类函数可以作为条件过滤。首先介绍itemgetter函数。假设定义了一个f函数,f=itemgetter(2),那么如果调用f(
  • python中remove()方法如何使用删除后的值? python中remove()方法如何使用删除后的值?有时,您可能不知道列表中元素的索引,但只要您知道该值,您就可以根据该值删除该元素。remove()方法可以使用。remove()方法将不返回已删除
  • Python中Operator计算函数 python中Operator计算函数使用Operator模块中的mul函数来实现阶乘:fromoperatorimportmuldeffactWithMul(n):returnreduce(mul,
  • python中如何查看stdin编码? python中如何查看stdin编码?1、通过Pythonsys库查看$pythonPython2.7.6(default,Nov132018,12:45:42)[GCC4.8.4]onlinux2T
  • python中列表的索引如何理解? python中列表的索引如何理解?一、python中列表的索引介绍:第一个列表要素的索引为0,很多编程语言都是这样规定的,这与列表操作的基础有关。第二个列表要素的索引值为1,根据该访问方式,访问任何要