Sobes.tech
Junior — Middle

¿Puede explicar qué significa el término 'descriptor' en el contexto de Python y cómo funciona?

sobes.tech AI

Respuesta de la IA

En Python, el descriptor es un objeto que controla el acceso a los atributos de otro objeto. Implementa uno o varios métodos especiales: __get__, __set__ y __delete__. Cuando se solicita, establece o elimina un atributo con descriptor, se llaman los métodos correspondientes del descriptor.

Esto permite controlar el comportamiento de los atributos, por ejemplo, implementar propiedades calculadas, validación de valores o inicialización perezosa.

Ejemplo de un descriptor simple para verificar el tipo de valor:

class Typed:
    def __init__(self, name, expected_type):
        self.name = name
        self.expected_type = expected_type

    def __get__(self, instance, owner):
        return instance.__dict__[self.name]

    def __set__(self, instance, value):
        if not isinstance(value, self.expected_type):
            raise TypeError(f"Se esperaba un tipo {self.expected_type.__name__}")
        instance.__dict__[self.name] = value

class Person:
    age = Typed('age', int)

p = Person()
p.age = 30  # funciona
# p.age = 'treinta'  # generará TypeError

De esta manera, los descriptores son una herramienta poderosa para gestionar el acceso a los atributos en Python.