Объект загружается в виде списка с помощью модуля pickle в Python 3.7 - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь использовать pickle для сохранения и загрузки объекта, но он не загружается должным образом. Выдает ошибку:

Traceback (most recent call last): line 161, in <module> main()
 line 28, in main print(tama.__dict__)
 AttributeError: 'list' object has no attribute '__dict__'

Это часть моего кода:

import pickle


class Tamagotchi:
    def __init__(self, size, color, previous_actions):
        self.size = size
        self.color = color
        self.previous_actions = previous_actions

    def change_size(self, int):
        self.size += int


def main():

    with open('save_file.txt', 'rb') as file:
        tama = pickle.load(file)

    print(tama.__dict__)


def quit(root, tama):
    if messagebox.askokcancel("Avsluta", "Vill du avsluta?"):

        with open('save_file.txt', 'wb') as file:
            pickle.dump([tama], file, protocol=2)

        root.destroy()

Я добавил print(tama.__dict__) прямо перед вызовом pickle.dump (), и он напечатал:

{'size': 60, 'color': 'yellow', 'previous_actions': ['Tenta', 'Festa']}. 

И файл save_file изменяется, когда я использую pickle.dump ()

Так что я думаю, что он сохраняется правильно, с правильными атрибутами. И я думаю, что я могу загрузить его, но он загружается в виде списка или что-то?

...