0
我注意到,当我的对象包含明确的引用模块时,pickling
它将因此而失败。但是,如果我将该模块的某个函数的引用粘贴到我的对象中,则可以成功挑选并取消选取。为什么可以腌制功能,但不是模块?
Python如何让pickle功能,但不是模块?
我注意到,当我的对象包含明确的引用模块时,pickling
它将因此而失败。但是,如果我将该模块的某个函数的引用粘贴到我的对象中,则可以成功挑选并取消选取。为什么可以腌制功能,但不是模块?
Python如何让pickle功能,但不是模块?
因为他们没有对它进行编码支持。 C级别类型(甚至用Python编写的模块都是用C级别类型实现的)需要明确编码pickle
支持。
如果允许腌制module
,确定应该腌制什么不是很容易;在另一面导入相同的名字看起来很简单,但如果你真的试图腌制模块本身,担心的是你也想尝试模块状态。如果模块是一个C扩展模块,模块状态甚至不会暴露给Python本身,只在C层内部使用,这更加令人困惑。
鉴于通常您需要某个模块的特定事物,而不是整个模块(通常不作为状态引用,只是在顶层导入),支持模块酸洗的好处是有限的,语义是不清楚,他们没有打算实施它。
@Tommy模块是对象 – MaxB
isinstance(数学,对象)=>真 – MaxB
正确,抱歉。我试图弄清楚,酸洗模块的理想结果是什么?代码?国家? – Tommy