15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

>>>

Before: Vector3D(10, -7, 3)

Serialized: {"class": "Vector3D", "args": [10, -7, 3]}

After: Vector3D(10, -7, 3)

Usar metaclasses para serialização de classe garante que uma classe jamais será

esquecida, desde que a árvore de heranças esteja correta. Funciona bem com

serialização, como demonstrado, e também se aplica aos mapeamentos entre

objetos e relacionamento (Object-Relationship Mappings – ORMs) em um

banco de dados, além de gerenciadores de plugins e ganchos do sistema.

Lembre-se

• Os registros de classe são úteis para a construção de programas modulares em

Python.

• As metaclasses permitem executar código de registro automaticamente a cada

vez que sua classe-base seja herdada por uma subclasse em um programa.

• As metaclasses, quando usadas para o registro de classes, evitam erros ao

garantir que as chamadas de registro jamais sejam esquecidas.

Item 35: Crie anotações de atributos de classe com

metaclasses

Um dos recursos mais úteis das metaclasses é a possibilidade de modificar ou

criar anotações em propriedades depois que uma classe for definida, mas antes

de a classe ser realmente utilizada. Essa técnica é comumente empregada nos

descritores (consulte o Item 31: “Use descritores para implementar métodos

reutilizáveis de @property”) para introspecção sobre como eles estão sendo

usados internamente nas classes que os contém.

Por exemplo, digamos que se queira definir uma nova classe que representa uma

linha em seu banco de dados de clientes. Será necessária uma propriedade

correspondente na classe para cada coluna na tabela do banco. No código a

seguir, definimos uma classe descritora que associa os atributos aos nomes das

colunas.

class Field(object):

def __init__(self, name):

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!