В чем разница между __reduce__ и __reduce_ex__?

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

2 Solutions collect form web for “В чем разница между __reduce__ и __reduce_ex__?”

Документы говорят, что

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

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

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

На захватывающей руке Гвидо говорит, что это область, которую можно очистить.

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

  • Сосредоточенные объекты
  • Python: зачем мариновать?
  • Почему возникает неожиданное поведение на Python после травления?
  • Солить обе переменные класса и переменные экземпляра?
  • Как я распечатываю серию объектов из файла в Python?
  • Почему не добавляются бинарные соленые огурцы?
  • Есть ли способ просмотреть содержимое cPickle или Pickle без загрузки Python в Windows?
  • Травление питона после изменения каталога модуля
  • ошибка загрузки сокета "__init __ () принимает ровно 2 аргумента (1 задано)"
  • Соленые огурцы: Почему они так называли?
  • ошибка травления в python?
  • Python - лучший язык программирования в мире.