python – Pickle:AttributeError:’module’对象没有属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Pickle:AttributeError:’module’对象没有属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2195字,纯文字阅读大概需要4分钟。
内容图文
我发现了很多关于这个问题的线索,但所有这些问题都是命名空间.我的问题与命名空间无关.
一个小例子:
import cPickle as pickle
from uncertainties import Variable
class value(Variable):
def __init__(self, args, showing=False):
self.show = showing
Variable.__init__(self, args[0], args[1])
val = value((3,1), True)
print val.nominal_value, val.std_dev(), val.show
fobj = file("pickle.file", "w")
pickle.dump(val, fobj)
fobj.close()
fobj = file("pickle.file", "r")
val = pickle.load(fobj)
fobj.close()
print val.nominal_value, val.std_dev(), val.show
这段代码的输出:
3.0 1.0 True
3.0 1.0
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
173 else:
174 filename = fname
--> 175 __builtin__.execfile(filename, *where)
/home/markus/pickle.py in <module>()
19 val = pickle.load(fobj)
20 fobj.close()
---> 21 print val.nominal_value, val.std_dev(), val.show
AttributeError: 'value' object has no attribute 'show'
酸洗和去斑纹时的命名空间是相同的.不确定性的所有属性.恢复变量 – 只有我添加的一个“节目”被遗漏.
解决方法:
uncertainties.Variable() class使用__slots__ attribute来节省内存.因此,要进行pickleable,它也必须定义__getstate__ method(见Why am I getting an error about my class defining __slots__ when trying to pickle an object?).
如果您需要添加自己的附加属性,则必须覆盖该__getstate__方法.在您自己的__slot__属性中声明其他属性也可能是一个好主意:
from uncertainties import Variable
class value(Variable):
__slots__ = ('show',) # only list *additional* slots
def __init__(self, args, showing=False):
self.show = showing
super(value, self).__init__(args[0], args[1])
def __getstate__(self):
obj_slot_values = {}
for cls in type(self).mro():
obj_slot_values.update((k, getattr(self, k)) for k in getattr(cls, '__slots__', ()))
# Conversion to a usual dictionary:
return obj_slot_values
这个新的__getstate__是必需的,因为Variable .__ getstate__方法假设只有一个__slots__属性,而MRO中的每个类可能有一个.
这实际上是不确定性库的限制;我已经提交了一个解决这个问题的pull request,并且不再需要覆盖子类中的__getstate__方法.
内容总结
以上是互联网集市为您收集整理的python – Pickle:AttributeError:’module’对象没有属性全部内容,希望文章能够帮你解决python – Pickle:AttributeError:’module’对象没有属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。