Python Pickle中的已知错误?

时间:2016-12-20 00:11:48

标签: python pickle

给出以下代码:

import pickle

class Test:
    d = {}    

    def func(self):
        self.d['x'] = 'y'

test = Test()
test.func()
pickle.dump(test, open('test.p', 'wb'))

%reset

import pickle
class Test:
    d = {}    

    def func(self):
        self.d['x'] = 'y'


print(pickle.load(open('test.p', 'rb')).d)

我希望输出

y
y

但是,实际输出是

y
{}

这是一个已知的错误还是我误解了什么?

我在 Windows 上使用 Miniconda Python 3.5.2

1 个答案:

答案 0 :(得分:3)

来自pickle documentation

  

...当类实例被腌制时,它们的类的代码和数据不会与它们一起被腌制。仅腌制实例数据。

您看到的行为已记录在案,而不是错误。