Python 黑魔法—描述器(descriptor)
Python黑魔法,前面已经介绍了两个魔法,装饰器和迭代器,通常还有个生成器。生成器固然也是一个很优雅的魔法。生成器更像是函数的行为。而连接类行为和函数行为的时候,还有一个描述器魔法,也称之为描述符。
我们不止一次说过,Python的优雅,很大程度在于如何设计成优雅的API。黑魔法则是一大利器。或者说Python的优雅很大程度上是建立在这些魔法巧技基础上。
何谓描述器
当定义迭代器的时候,描述是实现迭代协议的对象,即实现__iter__方法的对象。同理,所谓描述器,即实现了描述符协议,即__get__, __set__, 和 __delete__方法的对象。
单看定义,还是比较抽象的。talk is cheap。看代码吧:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class WebFramework(object): def __ini |
本文介绍了Python中的描述器(descriptor),一种实现优雅API的黑魔法。描述器是实现了描述符协议的对象,用于控制类和实例的属性访问。文章详细讲解了描述器的工作原理,包括描述器调用、描述器与对象属性的关系、属性访问的原理,以及实例方法、类方法和静态方法如何与描述器交互。最后,展示了描述器在实际应用中的例子,如缓存和ORM中的预编译。
订阅专栏 解锁全文
731

被折叠的 条评论
为什么被折叠?



