我想坚持保留reverend.thomas.Bayes
中的一个对象。当然,如果我尝试直接抽取其中一个类,我会得到:
TypeError: can't pickle instancemethod objects
为了解决这个问题,我尝试声明两个函数:
^{pr2}$基本上,我尝试复制对象的__dict__
,并通过针对types.MethodType
测试类型来删除{
然后,我将通过创建一个新的Bayes
对象,然后将其与bayes_dic
合并(在取消拾取之后)
但是,我还没有找到第二个方法,因为我仍然不能在没有得到原始错误的情况下pickle从prepare_bayes_for_pickle
返回的对象。在
更好的解决方案是将
__getstate__
方法添加到Bayes
类中(并附带__setstate__
):现在,
Bayes
类总是可以被pickle和unpickle,而不需要额外的处理。在我确实看到类有一个
self.cache = {}
映射;也许在pickle时应该排除它?在__getstate__
中忽略它,并在__setstate__
中调用self.buildCache()
。在k
是一个键,即属性/方法名。您需要测试属性本身:我更喜欢使用理解;您还应该使用
^{pr2}$isinstance
:这听起来像是用一个方形的木桩来装圆孔。如何使用pickle来pickle参数,并取消pickle来重建
reverand.Thomas.Bayes
对象?在灵感来自于thisSO问题。在
相关问题 更多 >
编程相关推荐