1.描述器是什么?
在Python中描述器也被称为描述符,
1)描述器实际上是任何新式类(新式类是继承自 type 或者 object 的类),这种类至少实现了3个特殊的方法__get__
, __set__
, __delete__
中的一个。而这3个特殊的方法充当描述器协议的作用。
2)同时实现了__get__()
和__get__()
的类被称为数据描述器(data descriptor)。只实现了 __get__()
方法的类是非数据描述器(常用于方法,当然其他用途也是可以的)。
2. 描述器有啥用?
描述器功能强大,应用广泛,它可以控制我们访问属性、方法的行为,是@property、super、静态方法、类方法、甚至属性、实例背后的实现机制,是一种比较底层的设计,描述器在Python自身中广泛使用,以实现Python 2.2中引入的新式类。描述器简化了底层的C代码,并为Python的日常编程提供了一套灵活的新工具。
3. 描述器的简单例子
当访问一个属性时,我们可以不直接给一个值,而是接一个描述器,让访问和修改设置时自动调用__get__
方法和__set__
方法。再在__get__
方法和__set__
方法中进行某种处理,就可以实现更改操作属性行为的目的。这就是描述器做的事情。
参考:
https://www.jb51.net/article/87455.htm
https://www.cnblogs.com/JetpropelledSnake/p/8953988.html
https://www.cnblogs.com/liujiacai/p/10064774.html