0
я встретил проблему рассол, код является то, что:не солить instancemethod объекты
import cPickle
class A(object):
def __init__(self):
self.a = 1
def methoda(self):
print(self.a)
class B(object):
def __init__(self):
self.b = 2
a = A()
self.b_a = a.methoda
def methodb(self):
print(self.b)
if __name__ == '__main__':
b = B()
with open('best_model1.pkl', 'w') as f:
cPickle.dump(b, f)
Ошибка в том, что:
File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex raise TypeError, "can't pickle %s objects" % base.name TypeError: can't pickle instancemethod objects
Есть Отер способ решить эту проблему вместо замены – DemoRunner
Если вы посмотрите на то, что 'dill' делает, это только регистрирующие функции сериализации с' copyreg'. Если вы хотите, вы можете сделать то же самое ... в основном, зарегистрируйте те же функции сериализации 'dill', а затем' pickle' будет работать для вас, как указано выше. –