Предположим, что у нас есть питон enum , где значения имеют тип functools.partial . Как марировать и раскрыть члена этого перечисления?
Код: Выделить всё
import pickle
from enum import Enum
from functools import partial
def function_a():
pass
class EnumOfPartials(Enum):
FUNCTION_A = partial(function_a)
if __name__ == "__main__":
with open("test.pkl", "wb") as f:
pickle.dump(EnumOfPartials.FUNCTION_A, f)
with open("test.pkl", "rb") as f:
pickle.load(f)
< /code>
Приведенный выше код пытается раскриптировать и раскрыть такой объект. Pickle.load
Код: Выделить всё
ValueError: functools.partial() is not a valid EnumOfPartials
Сам по себе объект полезен для целей конфигураций: Использование Hydra, я могу иметь параметр в YAML, который соответствует выбору функции в перечислении. Причина использования частичного заключается в том, что function_a не интерпретируется как метод (см. Этот вопрос). Возможность осадить члена этого перечисления желательна, чтобы быть в состоянии отправить его в другой процесс. Python 3.11.11.
Подробнее здесь: https://stackoverflow.com/questions/796 ... ls-partial