Capítulo 23. Descriptores de atributos

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Aprender sobre descriptores no sólo proporciona acceso a un conjunto de herramientas más amplio, sino que crea una comprensión más profunda de cómo funciona Python y una apreciación de la elegancia de su diseño.

Raymond Hettinger, desarrollador y gurú del núcleo de Python1

Descriptores son una forma de reutilizar la misma lógica de acceso en múltiples atributos. Por ejemplo, los tipos de campo en los ORM, como el ORM de Django y SQLAlchemy, son descriptores, que gestionan el flujo de datos desde los campos de un registro de base de datos a los atributos de objetos Python y viceversa.

Un descriptor es una clase que implementa un protocolo dinámico formado por los métodos __get__, __set__ y __delete__. La clase property implementa el protocolo completo del descriptor. Como es habitual con los protocolos dinámicos, las implementaciones parciales están bien. De hecho, la mayoría de los descriptores que vemos en el código real sólo implementan __get__ y __set__, y muchos sólo implementan uno de estos métodos.

Los descriptores son una característica distintiva de Python, desplegados no sólo a nivel de aplicación, sino también en la infraestructura del lenguaje. Las funciones definidas por el usuario son descriptores. Veremos cómo el protocolo de descriptores permite que los métodos funcionen como métodos vinculados o no vinculados, ...

Get Python fluido, 2ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.