Was ist der Unterschied zwischen __reduce__ und __reduce_ex__?
Frage
Ich verstehe, dass diese Verfahren zum Beizen / Unpickling und haben keinen Bezug auf die eingebaute Funktion reduzieren, aber was ist der Unterschied zwischen dem 2 und warum brauchen wir beides?
Lösung
docs sagen, dass
Falls vorhanden, bei Beizzeit
__reduce__()
wird nicht aufgerufen werden Argumente, und es muss entweder ein Rück String oder ein Tupel.
Auf der anderen Seite,
Es ist manchmal nützlich, die wissen, Protokollversion bei der Umsetzung
__reduce__
. Dies kann erfolgen durch Durchführung eines Verfahrens namens__reduce_ex__
statt__reduce__
.__reduce_ex__
, wenn es vorhanden ist, wird bevorzugt genannt über__reduce__
(Sie können vorsehen, noch__reduce__
für Rückwärts Kompatibilität). die__reduce_ex__
Verfahren wird mit einem einzigen aufgerufen werden Integer-Argument, das Protokoll Version.
Auf der Greifhand, Guido sagt dass dies ist ein Bereich, werden gereinigt konnte.
Andere Tipps
__reduce_ex__
ist, was __reduce__
sein sollte, aber nie wurde. __reduce_ex__
funktioniert wie __reduce__
aber die Gurke Protokoll geführt wird.