15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Python 3.

• O método __new__ em metaclasses é executado somente após a totalidade do

corpo de um comando class ser processado.

Item 34: Registre a existência de uma classe com

metaclasses

Outro uso comum para as metaclasses é registrar automaticamente os tipos em

um programa. O registro é útil para pesquisas reversas, quando é necessário

associar um identificador simples a uma classe.

Por exemplo, digamos que se queira implementar sua própria representação

serializada de um objeto em Python usando o formato JSON. É preciso encontrar

uma maneira de tomar um objeto e transformá-lo em uma string JSON. No

exemplo de código a seguir, fazemos isso de forma genérica definindo uma

classe base que armazena os parâmetros do construtor e os converte em um

dicionário JSON:

class Serializable(object):

def __init__(self, *args):

self.args = args

def serialize(self):

return json.dumps({'args': self.args})

Com isso, fica fácil serializar em uma string uma estrutura de dados simples e

imutável como a Point2D.

class Point2D(Serializable):

def __init__(self, x, y):

super().__init__(x, y)

self.x = x

self.y = y

def __repr__(self):

return 'Point2D(%d, %d)' % (self.x, self.y)

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!