Junior — Middle
Pode explicar o que significa o termo 'descriptor' no contexto do Python e como funciona?
sobes.tech IA
Resposta da IA
Em Python, o descritor é um objeto que controla o acesso aos atributos de outro objeto. Implementa um ou vários métodos especiais: __get__, __set__ e __delete__. Quando um atributo com descritor é solicitado, definido ou removido, os métodos correspondentes do descritor são chamados.
Isto permite controlar o comportamento dos atributos, por exemplo, implementar propriedades calculadas, validação de valores ou inicialização preguiçosa.
Exemplo de um descritor simples para verificar o 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"Esperava-se um tipo {self.expected_type.__name__}")
instance.__dict__[self.name] = value
class Person:
age = Typed('age', int)
p = Person()
p.age = 30 # funciona
# p.age = 'trinta' # causará um TypeError
Assim, os descritores são uma ferramenta poderosa para gerir o acesso aos atributos em Python.