取消拾取对象时发生AttributeError

取消拾取对象时发生AttributeError,第1张

取消拾取对象时发生AttributeError

class Foo
必须在解酸环境中通过相同的路径导入,以便可以重新实例化酸洗的对象。

我认为您的问题是您

Foo
在要作为main(
__name__ == "__main__"
)执行的模块中定义。Pickle会将路径(而不是类object
/ definition !!!)序列化为
Foo
位于主模块中。
Foo
不是主要打开脚本的属性。

在此示例中,您可以重新定义

classFoo
解腌脚本,并且它应该也可以解腌。但实际上是要有一个在两个脚本之间共享的公共库,并且可以通过同一路径使用。示例:
Foo
在foo.py中定义

简单的例子:

$ PROJECT_DIR / foo.py

class Foo(object):    pass

$ PROJECT_DIR / picklefoo.py

import cPicklefrom foo import Foodef pickleObject():    obj = Foo()    savefile = open('pickle.txt', 'w')    cPickle.dump(obj, savefile, cPickle.HIGHEST_PROTOCOL)pickleObject()

$ PROJECT_DIR / unpicklefoo.py

import cPicklesavefile = open('pickle.txt', 'r')obj = cPickle.load(savefile)...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5674455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存