我发现了一个解决方案。看来问题是在dict中执行代码会阻止python弄清楚类的定义位置。解决方案是创建一个空模块,执行模块中的代码,然后将该模块添加到sys.modules中,以便python知道。
script = """class myClass: def __init__(self): self.name = 'apple' self.color = 'green'"""import imp, sysmoduleName = 'custom'module = imp.new_module(moduleName)exec script in module.__dict__sys.modules[moduleName] = module
Now it is possible to pickle and unpickle an instance of the class:
import picklea = module.myClass()s = pickle.dumps(a)b = pickle.loads(s)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)