Предположим, что я имел следующий подкласс, который я использую, чтобы временно жертвуют list
с некоторыми дополнительными методами,Травление объекта в качестве экземпляра его родительского класса?
class MyList(list):
def some_function(self):
pass
, а затем я сделать что-то вроде
>>> f = MyList()
>>> .. bunch of list stuff ...
>>> cPickle.dump(f,open('somefile','w'))
Теперь, что все хорошо пока я пытаюсь открыть файл
>>> cPickle.load(open('somefile'))
и я получаю жалобы, что MyList
не существует. Есть ли способ каким-то образом получить MyList
, чтобы рассолить как простой list
, так что, когда я позже попытаюсь загрузить файл pickle, я не получу эту пропавшую ошибку класса? Я хотел бы, чтобы файл pickle ссылался только на встроенный тип list
.
Почему бы не решить проблему недостающего класса, имея свой модуль доступных для импорта, когда unpickling (с 'MyList' как глобальный, что модуль)? –
Вы прочитали [документацию] (https://docs.python.org/3/library/pickle.html#pickling-class-instances)? – BrenBarn
Вы можете настроить то, что мариновали, да, есть различные крючки, см. Https://docs.python.org/3/library/pickle.html#pickling-class-instances –