Я пытаюсь разборки экземпляра пользовательского класса, этот класс имеет атрибут под названием «виджеты», который содержит список объектов виджета. Когда я размалываю контейнер, список теряется. Разве нельзя рассортировать список внутри объекта?Почему не удается рассортировать список, являющийся атрибутом объекта?
import pickle
filename = 'container.pkl'
class Container(object):
widgets = []
class Widget(object):
pass
c = Container()
c.name = "My Container"
w = Widget()
w.name = "My Widget"
c.widgets.append(w)
data = open(filename, 'wb')
pickle.dump(c, data)
data.close()
Позже я пытаюсь unpickle ...
# assume I have imported the classes and filename here
data = open(filename, 'rb')
container = pickle.load(data)
data.close()
print container.name # shows the pickled name
print container.widgets # shows []
Я попытался рассол и cPickle с теми же результатами.
Я не могу воспроизвести эту проблему - с помощью вашего кода, используя python 2.7.5, 'print container.widgets' prints' [<__ main __. Widget object at 0x1004c2350>] '. Не могли бы вы попробовать запустить ** только ** код выше и посмотреть, есть ли у вас такая же проблема? Возможно, что-то в коде, который вы не показали, вызывает проблему. – Brionius
I ** может ** воспроизвести проблему с помощью python 2.7.5. – martineau
Brionius, это почти точный код, он содержится в одном файле, и я комментирую/раскомментирую травление и рассыпание. Если я запустил все сразу и разборчиво/расклеился в том же скрипте, он работает, но я не уверен, почему это так. –