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.

self.y = y

register_class(EvenBetterPoint2D)

Agora podemos desserializar qualquer string arbitrária em formato JSON sem

precisar saber a classe que ela contém.

point = EvenBetterPoint2D(5, 3)

print('Before: ', point)

data = point.serialize()

print('Serialized:', data)

after = deserialize(data)

print('After: ', after)

>>>

Before: EvenBetterPoint2D(5, 3)

Serialized: {"class": "EvenBetterPoint2D", "args": [5, 3]}

After: EvenBetterPoint2D(5, 3)

O problema com essa técnica é que podemos nos esquecer de chamar

register_class.

class Point3D(BetterSerializable):

def __init__(self, x, y, z):

super().__init__(x, y, z)

self.x = x

self.y = y

self.z = z

# Esqueci de chamar register_class! OOOOPS!

Isso fará com que o código apresente um erro em tempo de execução, no

momento em que estiver sendo desserializado algum objeto pertencente a uma

classe que esquecemos de registrar.

point = Point3D(5, 9, -4)

data = point.serialize()

deserialize(data)

>>>

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!