Quelle est la différence entre __reduce__ et __reduce_ex__?
Question
Je comprends que ces méthodes s'appliquent au décapage / au décapage et n’ont aucun rapport avec la fonction intégrée de réduction, mais quelle est la différence entre le 2 et pourquoi avons-nous besoin des deux?
La solution
Les documents disent que
Si fourni, au moment du décapage
__ réduire __ ()
sera appelé sans arguments, et il doit retourner soit un chaîne ou un tuple.
D'autre part,
Il est parfois utile de connaître le version du protocole lors de la mise en œuvre
__ réduire __
. Cela peut être fait par implémenter une méthode nommée__ reduction_ex __
au lieu de__ réduire __
.__ réduire_ex __
, quand il existe, est appelé de préférence sur__ réduire __
(vous pouvez toujours fournir__ réduire __
pour revenir en arrière compatibilité). Le__ reduction_ex __
la méthode sera appelée avec un seul argument entier, le protocole version.
De votre côté, Guido dit que c’est un domaine qui pourrait être nettoyé.
Autres conseils
__ reduction_ex __
est ce que __ réduction __
aurait dû être, mais n'est jamais devenu. __ réduire_ex __
fonctionne comme __ réduire __
mais le protocole de pickle est passé.