Как засолить себя?

Я хочу, чтобы мой класс реализовал, Сохраняют и функции Загрузки, которые просто делают рассол класса. Но по-видимому Вы не можете использовать 'сам' способом ниже. Как можно сделать это?

self = cPickle.load(f)

cPickle.dump(self,f,2)
55
задан Delgan 21 April 2018 в 11:20
поделиться

4 ответа

Вот что я в итоге сделал. Обновление __dict__ означает, что мы сохраняем все новые переменные-члены, которые я добавляю в класс, и просто обновляем те, которые были там, когда объект был последний раз pickle'd. Это кажется наиболее простым при сохранении кода сохранения и загрузки внутри самого класса, так что вызывающий код просто выполняет object.save().

def load(self):
    f = open(self.filename, 'rb')
    tmp_dict = cPickle.load(f)
    f.close()          

    self.__dict__.update(tmp_dict) 


def save(self):
    f = open(self.filename, 'wb')
    cPickle.dump(self.__dict__, f, 2)
    f.close()
41
ответ дан 7 November 2019 в 07:28
поделиться

Часть дампа должна работать, как вы предложили. для части загрузки вы можете определить @classmethod , который загружает экземпляр из заданного файла и возвращает его.

@classmethod
def loader(cls,f):
    return cPickle.load(f)

, тогда вызывающий должен сделать что-то вроде:

class_instance = ClassName.loader(f)
21
ответ дан 7 November 2019 в 07:28
поделиться

Как насчет написания класса под названием Serializable, который будет реализовывать дамп и загрузку и унаследовать ваш класс от него?

-3
ответ дан 7 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: