Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从json覆盖self_Python_Instance_Jsonpickle - Fatal编程技术网

Python 从json覆盖self

Python 从json覆盖self,python,instance,jsonpickle,Python,Instance,Jsonpickle,我正在写一个程序,它应该或多或少地连续运行。如果我终止程序,或者它抛出错误,我希望保存所有对象实例。为此,我使用jsonpickle保存所有实例。当程序继续进行时,我想继续我中断的地方。我的想法是这样做: class A(object): def __init__(self): try: with open('A.json', 'r') as fp: self = jsonpickle.decode(json.loa

我正在写一个程序,它应该或多或少地连续运行。如果我终止程序,或者它抛出错误,我希望保存所有对象实例。为此,我使用jsonpickle保存所有实例。当程序继续进行时,我想继续我中断的地方。我的想法是这样做:

class A(object):
    def __init__(self):
       try:
            with open('A.json', 'r') as fp:
                 self = jsonpickle.decode(json.load(fp))
       except IOError:
            self.X = 'defaultvalue'
            self.Y = 'defaultvalue'
其中A.json包含以前使用jsonpickle保存的实例(该部分有效)。但是,self不会被我的代码覆盖


我怀疑我必须实现我想在新世界里做的事情。我读了文档,但是我有点迷路了。如果您能就如何以一种好的方式实现我想要的东西提供任何建议,我将不胜感激。

我不知道jsonpicle,但有了JSON,您可以这样做:

import json

class ClassA(object):
    def __init__(self):
       try:
            with open('A.json', 'r') as fp:
                 self.__dict__ = json.loads(fp.read())
       except IOError:
            self.X = 'defaultvalue'
            self.Y = 1

    def __del__(self):
       with open('A.json', 'wb') as fp:
          fp.write( json.dumps( self.__dict__) )

if __name__ == "__main__":       
   myobj  = ClassA()
   print "GOT X : " + str(myobj.X)
   print "GOT Y : " + str(myobj.Y)
   myobj.X += " RUN ME AGAIN "
   myobj.Y += 1
   myobj = None
请注意,
\uu del\uu
是由垃圾收集器调用的;至少对我来说,如果我没有那里的
myobj=None
,它完全失败了


不管怎样,如果你只是假设你总是可以在关机时把东西写到磁盘上,那么你最终会遇到麻烦;想想当你拔出电源插头时会发生什么:我建议尽快进行写操作(并调用一些刷新功能以确保修改也写入磁盘)。

我真的怀疑它是否能无限运行。所以你只能有一个
类的实例?为什么不在课堂外解缆呢?