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里面...
感觉很奇怪, 于是去水源求助 ...