Большое спасибо всем!
аюсь сериализовать большое количество пользовательских классов на диск с помощью Python pickle. Тем не менее, классы не сериализуются должным образом.
Посмотрев надокументы мое понимание того, что я пытаюсь сделать, должно работать, но, возможно, это не просто потому, что я чего-то не понимаю.
Мои классы определены на верхнем уровне модуля. И никакое исключение PicklingError не вызывается при попытке засолки.
Вот мой пример кода. Раскомментируйте Save () для сериализации; раскомментируйте Load () для загрузки. При загрузке массив Синонимов Term не заполняется, но основной объект Term десериализуется. Вы можете убедиться в этом, проверив объект «loadedTerms », возвращаемый функцией Load ().
Что я делаю неправильно? Благодарю.
import pickle
class Entry:
Text = ""
def __init__(self, text):
self.Text = text
class Term:
Main = None
Synonyms = []
def Save():
term = Term()
term.Main = Entry("Dog")
term.Synonyms.append(Entry("Canine"))
term.Synonyms.append(Entry("Pursue"))
term.Synonyms.append(Entry("Follow"))
term.Synonyms.append(Entry("Plague"))
terms = []
terms.append(term)
with open('output.pickle', 'wb') as p:
pickle.dump(terms, p)
def Load():
loadedTerms = []
with open('output.pickle', 'rb') as p:
loadedTerms = pickle.load(p)
return loadedTerms
#Save()
#terms = Load()