python - pkl - pickle.loads example
¿Cuál es la diferencia entre__reduce__ y__reduce_ex__? (2)
Entiendo que estos métodos son para decapado / desatornillado y no tienen relación con la función incorporada de reducción, pero ¿cuál es la diferencia entre los 2 y por qué necesitamos ambos?
__reduce_ex__ es lo que __reduce__ debería haber sido pero nunca se convirtió. __reduce_ex__ funciona como __reduce__ pero se pasa el protocolo de pickle.
Los doctores dicen que
Si se proporciona, en el tiempo de decapado se
__reduce__()sin argumentos, y debe devolver una cadena o una tupla.
Por otra parte,
A veces es útil conocer la versión del protocolo al implementar
__reduce__. Esto puede hacerse implementando un método llamado__reduce_ex__lugar de__reduce__.__reduce_ex__, cuando existe, se llama con preferencia sobre__reduce__(aún puede proporcionar__reduce__para compatibilidad con versiones anteriores). Se__reduce_ex__método__reduce_ex__con un solo argumento entero, la versión del protocolo.
En la mano apretada, Guido dice que este es un área que podría limpiarse.