2008-09-29 1 views
14

Я понимаю, что эти методы предназначены для травления/распиловки и не имеют никакого отношения к встроенной функции уменьшения, но в чем разница между 2 и почему нам нужны оба?В чем разница между __reduce__ и __reduce_ex__?

ответ

21

The docs говорят, что

При наличии во время протравливания __reduce__() будет вызвана без аргументов , и он должен возвращать либо строку или кортеж.

С другой стороны,

Иногда полезно знать версию протокола при реализации __reduce__. Это можно сделать с помощью , реализующего метод с именем __reduce_ex__ вместо __reduce__. __reduce_ex__, когда он существует, указан более __reduce__ (вы все еще можете предоставить __reduce__ для обратной связи совместимость). Метод __reduce_ex__ будет вызываться с единственным аргументом целочисленного , протоколом .

На захватной руке Guido says, что это область, которую можно очистить.

+0

Благодарим вас, Джон, за очистку текста! :) – 2008-09-29 19:46:31

4

__reduce_ex__ - это то, что __reduce__ должно было быть, но так и не стало. __reduce_ex__ работает как __reduce__, но протокол рассола передается.

Смежные вопросы