В чем разница между __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 передается.

  • Как распиливать функции / классы, определенные в __main__ (python)
  • Python: проверка того, является ли объект атомарным макетированием
  • `_pickle.UnpicklingError: аргумент кода STRING должен быть указан`
  • Как распиливать и распаковывать экземпляры класса, который наследуется от defaultdict?
  • Травление питона после изменения каталога модуля
  • Как проверить, является ли объект разборчивым
  • Как проверить, был ли файл создан рассолом?
  • Почему не добавляются бинарные соленые огурцы?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.