Мне нужно написать несколько методов для загрузки / сохранения некоторых классов в двоичный файл и из него. Однако я также хочу иметь возможность принимать двоичные данные из других мест, например двоичную строку.
В C++ я мог бы сделать это, просто заставив методы моего класса использовать std :: istream и std :: ostream, которые могут быть файлом, строковым потоком, консолью и т. д.
Есть ли у python аналогичный класс ввода / вывода, который можно сделать так, чтобы он представлял практически любую форму ввода / вывода или, по крайней мере, файлы и память?






Способ Python сделать это - принять объект, реализующий read () или write (). Если у вас есть строка, вы можете сделать это с помощью StringIO:
from cStringIO import StringIO
s = "My very long string I want to read like a file"
file_like_string = StringIO(s)
data = file_like_string.read(10)
Помните, что Python использует утиную типизацию: вам не нужно задействовать общий базовый класс. Пока ваш объект реализует read (), его можно читать как файл.
Модули Рассол и cPickle также могут быть вам полезны.
Сами классы представляют собой байт-код Python, автоматически сохраняемый в файлы Python. Вы можете сохранять и восстанавливать объекты (экземпляры классов). Если вы имеете в виду объекты, перепишите свой вопрос, указав объекты или экземпляры.