如果我有一个定义类的脚本:
script = """
class myClass:
def __init__(self):
self.name = 'apple'
self.color = 'green'
"""
然后在它自己的命名空间字典中执行这个脚本:
NS = {}
exec script in NS
然后创建该类的一个实例并腌制它:
a = NS['myClass']()
import pickle
save = pickle.dumps(a)
现在,如果我尝试解开它:
load = pickle.loads(save)
我得到错误
AttributeError: 'module' object has no attribute 'myClass'
我认为这不起作用,因为 python 不知道在哪里可以找到 myClass 以重建对象。但是 myClass 确实存在于 NS 字典中。有没有办法告诉泡菜在哪里可以找到它正在加载的对象的类?