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.