腌制以下myFunc2时,将其腌制为 main .myFunc2(预期):
import pickle5 as pickle
def myFunc ():
print ("in my myFunc")
def myFunc2 (foo):
foo ()
myFunc2 (myFunc)
with open ("c:\\temp\pickle.pkl", "wb") as out:
pickle.dump (myFunc2, out)
当我反序列化腌制的myFunc时,myFunc2应该在 main 中定义。因此,在任何模块中反序列化myFunc均无效(因为 main 不存在)。因此,此操作失败并出现预期错误:
AttributeError: Can't get attribute 'myFunc2' on <module '__main__' from 'C:\\main.py'>
one.py:
from testClass import testClass
myInstance = testClass()
testClass.py:
将pickle5导入为pickle
class testClass (object):
"""description of class"""
def __init__ (self):
with open ("c:\\temp\pickle.pkl", "rb") as inFile:
pickle.load ( inFile)
我发现的唯一解决方法是在testClass.py模块之外(在用于开始执行的主代码中)定义myFunc2。或者在将其还原到的模块中腌制myFunc2。
问题: 1.有没有一种方法可以使myFunc2腌制,以便可以直接在任何模块中还原它,而不是先启动主执行程序(然后再执行 main )
我尝试先设置名称,然后再酸洗其他“ 主要”,但此操作无效。它仍然被腌制为 main .myFunc2