python的pickle/unpickle机制可以非常方便的保存一些计算的中间结果, 这一点java虽然也可以做到, 但是java里面的包的名字实在是长的让人记不住...
不过今天在使用pickle的时候遇到了一个很奇怪的问题.
是这样的, 原本写了一个程序 main.py , 这个程序里进行了一些计算并且pickle下了这些内容, 后来我觉得一个程序main.py写这么多实在太长了, 于是就把那些辅助函数以及class的定义通通放进了一个 util.py 文件里. 并且在main.py的第一行写上:
from util import *
按理说这应该没有问题, 和一个main文件时运行的效果相同的, 但是当我运行的时候却显示util.py里面这行unpickle的语句有错误:
airport_info = pk.load(file('airport_info.dict', 'rb')) >>AttributeError: 'module' object has no attribute 'Airport'其中 Airport 是我定义的一个类, 本来在main.py里面, 后来被我移动到了util.py里面...
感觉很奇怪, 于是去 水源 求助, 果然fcfarseer学长就很快给了 回复 :
在pickle一P\ 象的fB候,pickleg