Pergunta

Eu entendo que esses métodos são para decapagem / unpickling e não têm relação com a reduzir o built-in função, mas qual é a diferença entre a 2 e por que precisamos de ambos?

Foi útil?

Solução

Os docs dizer que

Se fornecido, a decapagem tempo __reduce__() será chamado sem argumentos, e deve retornar um string ou uma tupla.

Por outro lado,

Às vezes é útil para saber a versão do protocolo ao implementar __reduce__. Isso pode ser feito por a implementação de um método chamado __reduce_ex__ em vez de __reduce__. __reduce_ex__, quando se existe, é chamado na preferência sobre __reduce__ (você ainda pode fornecer __reduce__ para trás compatibilidade). o __reduce_ex__ método será chamado com um único argumento inteiro, o protocolo versão.

Na mão segurando, Guido diz que esta é uma área que poderia ser limpo.

Outras dicas

__reduce_ex__ é o que __reduce__ deveria ter sido, mas nunca se tornou. __reduce_ex__ funciona como __reduce__ mas o protocolo de picles é passado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top