ExpertiDict

Python · Avançado · Inglês · Técnico

descriptor

/dɪˈskɹɪptɚ/substantivo

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

Veja também

Todos os termos de Python