Serializa cualquier objeto de Python a bytes con pickle: dumps/loads, archivos, seguridad y personalización con __getstate__ y __setstate__.
Un uso típico de __getstate__ es descartar atributos que no deben persistir, como una conexión de red abierta o un socket, que no tienen sentido al cargarse en otra ejecución.
Combina __getstate__ (descartar la conexión al guardar) con __setstate__ (recrear la conexión al cargar) para serializar objetos que dependen del estado actual del programa.
Si __setstate__ no está definido, Python simplemente asigna el estado deserializado al __dict__ sin pasos adicionales.