相关资料
Python的描述符 - 下一站,我等你 - 博客园
https://www.cnblogs.com/Lynnblog/p/9033455.html
描述符的本质类
什么是描述符
Python为开发者提供了一个非常强大的功能——描述符。那什么是描述符呢?通过查看Python的官方文档,我们知道把实现了__get__()、__set__()和__delete__()
中的其中任意一种方法的类称之为描述符,描述符的本质是新式类,并且被代理的类(即应用描述符的类)也是新式类。描述符的作用是用来代理一个类的属性,需要注意的是描述符不能定义在类的构造函数中,只能定义为类的属性,它只属于类的,不属于实例,我们通过查看实例和类的字典即可知晓。
描述符是可以实现大部分Python类特性中最底层的数据结构的实现手段,我们常使用的@classmethod、@staticmethd、@property、甚至是__slots__等属性都是通过描述符来实现的。它是很多高级库和框架的重要工具之一,是使用到装饰器或者元类的大型框架中的一个非常重要组件。在一般的开发中我们可能用不到描述符,但是我们如果想要开发一个大型的框架或者大型的系统,那使用描述符会起到如虎添翼的作用。它的加盟将会使得系统更加完美。
描述符的分类:两种类别
描述符分为数据描述符和非数据描述符。
》数据描述符
把至少实现了内置属性__set__()和__get__()方法的描述符称为数据描述符;
》非数据描述符
把实现了除__set__()以外的方法的描述符称为非数据描述符。