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.

uma hierarquia de classes de dados representando as partes de uma topologia de

datacenter:

class DatacenterRack(ToDictMixin, JsonMixin):

def __init__(self, switch=None, machines=None):

self.switch = Switch(**switch)

self.machines = [

Machine(**kwargs) for kwargs in machines]

class Switch(ToDictMixin, JsonMixin):

# ...

class Machine(ToDictMixin, JsonMixin):

# ...

Serializar essas classes, indo e voltando do JSON, é muito simples. No exemplo

a seguir, temos a confirmação de que o código pode ser serializado e

desserializado a partir do formato JSON e novamente de volta ao formato JSON:

serialized = """{

"switch": {"ports": 5, "speed": 1e9},

"machines": [

{"cores": 8, "ram": 32e9, "disk": 5e12},

{"cores": 4, "ram": 16e9, "disk": 1e12},

{"cores": 2, "ram": 4e9, "disk": 500e9}

]

}"""

deserialized = DatacenterRack.from_json(serialized)

roundtrip = deserialized.to_json()

assert json.loads(serialized) == json.loads(roundtrip)

É permitido usar mix-ins como este nos casos em que a classe já havia herdado

anteriormente de JsonMixin em um ponto mais alto da hierarquia. A classe

resultante se comportará da mesma maneira.

Lembre-se

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!