Python · Avançado · Inglês · Técnico
descriptor
Objeto com __get__, __set__ ou __delete__ guardado como atributo de classe, que controla como o acesso a esse atributo funciona. É o mecanismo por trás de property e dos métodos.
Onde usar
Quando a mesma lógica de validação se repete em vários atributos, escreve-se um descriptor. Aparece em ORMs e em bibliotecas de validação.
Em código
class Dobro:
def __get__(self, obj, tipo=None):
return obj.n * 2
class Num:
n = 5
dobro = Dobro()
print(Num().dobro)Exemplos
A descriptor validates the value on every assignment.
Um descriptor valida o valor a cada atribuição.
A property is just a descriptor under the hood.
Uma property é só um descriptor por baixo dos panos.
Cuidado
O descriptor vive na classe e é compartilhado por todas as instâncias; guardar dados dentro dele sem separar por instância mistura os valores dos objetos.
Sinônimos
descritor