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.