如何序列化Atom api对象而不会丢失“连接”

时间:2016-12-19 00:52:36

标签: python pickle enaml

我正在使用基于Atom的Enaml gui,我想将原子对象保存/加载到磁盘上。

我尝试过使用泡菜,但我失去了与gui的联系。

from atom.api import Atom, Unicode
import pickle

class test(Atom):
     name = Unicode

     def save(self)
          f = open('tester.p','w')
          pickle.dump(self.name,f)
          f.close()

     def load(self):
          f = open('tester.p','r')
          self.name = pickle(f)  # gui is not updated
          #self.name = 'this one works' #gui is updated
          f.close()

如何在不丢失gui连接的情况下序列化Atom对象?

编辑: 我发现如果我做self.name = str(pickle(f))我可以在不丢失连接的情况下获取字符串。我怎样才能将这个想法扩展到更具概括性的东西,比如一个包含任意Atom对象的字典?

1 个答案:

答案 0 :(得分:0)

See this stackoverflow question and answer了解如何使用setattr保持Atom更新机制正常工作。