1
Учитывая следующий код:Известная ошибка в 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
{}
Это известная ошибка или я-то недоразумение?
Я использую Miniconda Python 3.5.2 на Windows.
Я бы не ожидал результата, которого вы ожидаете. 'self.d' - это переменная класса. Pickle сериализует объекты, а не классы. –
Каждый раз, когда вам интересно, есть ли ошибка в стандартном библиотечном модуле Python, вы можете вообще предположить, что ответ «нет, вы просто что-то не так». – TigerhawkT3
'.d' не является специфичным для объекта, который вы мариновали, почему вы ожидаете его маринования вместе с объектом? –