什么是Python描述符?刚学习Python的可能对它一无所知,下面就给大家详细解释Python描述符,看明白后就能清楚的知道描述符的实际作用了。Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问


什么是Python描述符? 那些刚刚学习过Python的人可能对它一无所知。 这是Python描述符的详细说明。 了解它之后,您可以清楚地了解该描述符的实际效果。

在Python中,通过使用描述符,程序员可以自定义在引用对象属性时要完成的工作。

本质上,描述符是一个类,但是它定义了另一个类中的属性访问方法。 换句话说,一个类可以将属性管理委托给描述符类。

描述符是Python中复杂属性访问的基础。 它在内部用于实现属性,方法,类方法,静态方法和超类型。

描述符类基于以下3种特殊方法,换句话说,这3种方法构成描述符协议:

__set __(self,obj,type = 无):设置属性时将调用此方法(由本节稍后的设置器指示);

__get __(self,obj,value):读取属性时将调用此方法(本节将在本节后面表示为getter);

__delete__ (自身,obj):当在属性上调用del时,将调用此方法。

其中,实现setter和getter方法的描述符类称为数据描述符; 相反,如果仅实现getter方法,则将其称为非数据描述符。

实际上,每次搜索属性时,描述符协议中的方法都会由类对象的特殊方法__getattribute __()调用(注意不要将其与__getattr __()混淆) 。 也就是说,每次使用class object.attribute(或getattr(类对象,属性值)的调用方法)时,__getattribute __()都会被隐式调用,并按以下顺序查找属性:[ k0]

1.验证属性是否为类实例对象的数据描述符;

2.如果没有,请检查是否可以在类实例对象的__dict__中找到该属性;

3.最后,检查属性是否是类实例对象的非数据描述符。