Ответ
Да, в контексте Python под Serializable обычно понимают объекты, которые можно сериализовать — то есть преобразовать в поток байтов для сохранения или передачи. В Python это реализуется с помощью модулей pickle или json.
Ключевые моменты:
pickle: Основной модуль для сериализации объектов Python. Не все объекты сериализуемы (например, открытые файлы или соединения с БД).- Протокол
__getstate__и__setstate__: Позволяют кастомизировать процесс сериализации/десериализации для сложных объектов.
Пример сериализации пользовательского класса:
import pickle
class DataPoint:
def __init__(self, x, y, label):
self.x = x
self.y = y
self.label = label
# При необходимости можно определить, как объект будет сериализован
def __getstate__(self):
state = self.__dict__.copy()
# Например, можно не сериализовать вычисляемое поле
# del state['computed_field']
return state
def __setstate__(self, state):
self.__dict__.update(state)
# Создание и сериализация объекта
point = DataPoint(10, 20, "A")
serialized = pickle.dumps(point)
# Десериализация
deserialized_point = pickle.loads(serialized)
print(deserialized_point.x, deserialized_point.label) # 10 A
На практике с этим сталкиваешься при кэшировании объектов на диск, использовании многопроцессорной обработки (multiprocessing) или работе с распределёнными системами вроде Apache Spark (где функции, передаваемые в rdd.map(), должны быть сериализуемыми).