Repaso
English
PythonAvanzadoPY-24

¿Sobre qué mecanismo se construye @property?

Opciones

  1. Metaclasses, que reescriben la clase cuando se crea
  2. El protocolo descriptor, con __get__ y __set__ (Opción correcta)
  3. El fallback __getattr__, que se llama para atributos que faltan
  4. Closures, que mantienen vivas las variables del getter

Respuesta

El protocolo descriptor (__get__ / __set__)

Por qué

Un descriptor es un objeto que controla qué pasa cuando se lee o escribe un atributo, definiendo __get__, __set__ o __delete__.

property es un descriptor incorporado: leer obj.x llama a tu función getter.

El mismo mecanismo hace funcionar los métodos, los classmethods y las columnas de un ORM (como los campos de SQLAlchemy).

Recuerda

@property es un descriptor.

Términos clave

Practica esta pregunta en Repaso