Как мне сохранить объект с помощью kivy?

#python #json #kivy #storage #pickle

Вопрос:

Я пытаюсь сохранить объект в памяти, чтобы прочитать его позже, когда приложение снова откроется. С помощью JSONStore kivy я могу сохранить все атрибуты объекта, но я хотел бы сохранить сам объект.

Вот мой класс:

 class Furniture():  _registry = []  def __init__(self, name, width, depth, height, color) -gt; None:  self._registry.append(self)  self.name = name  self.width = width  self.depth = depth  self.height = height  self.color = color  

Как я это делаю сейчас:

 store = JsonStore('furniture.json') f = Furniture('test', '1', '2', '3', 'red')  store.put(f.name, width=f.width, depth=f.depth, height=f.height, color=f.color)  

Что я хотел бы сделать:

 store = JsonStore('furniture.json') f = Furniture('test', '1', '2', '3', 'red')  store.put(f.name, obj=f)  

Это не работает, потому что объекты не сериализуемы в формате JSON.

Я попытался использовать pickle для сериализации и десериализации объекта в строку:

 store = JsonStore('furniture.json') f = Furniture('test', '1', '2', '3', 'red') serial = str(pickle.dumps(f)) store.put(f.name, obj=serial)  

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