Python - сохранение списка объектов и его атрибутов - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь сохранить список объектов и соответствующих атрибутов, которые идут вместе с ним. В следующем примере вы видите, что сначала я определяю список объектов и атрибутов, а затем сохраняю его. После сохранения файла я удаляю список, чтобы показать, что он пуст, но когда я вызываю функцию загрузки, мой список остается пустым. Кто-нибудь знает почему?

import pickle

class Company(object):
    def __init__(self, name, value):
        self.name = name
        self.value = value

class Define_Companies():

    company_list = []

    def run_this(self):

        for x,y in enumerate(range(0,6)):
            company_list_object = Company(x,y)
            Define_Companies().company_list.append(company_list_object)


        for x in Define_Companies().company_list:
            print(x.name)

Define_Companies().run_this()

def save_this_information():

    with open('company_data.pkl', 'wb') as output:
        pickle.dump(Define_Companies().company_list, output, pickle.HIGHEST_PROTOCOL)

Define_Companies().company_list.clear()
save_this_information()

def load_the_information():

    with open('company_data.pkl', 'rb') as input:
        Define_Companies().company_list = pickle.load(input)
    print(Define_Companies().company_list)

load_the_information()

Выход:

0
1
2
3
4
5
[]

1 Ответ

0 голосов
/ 05 ноября 2018

Вы вызываете Define_Companies().company_list.clear() прямо перед функцией сохранения, которая очищает все элементы в списке. Вы пытаетесь сохранить пустой список.


Также обратите внимание, что вам не нужно иметь экземпляр Define_Companies для доступа к переменной класса company_list, потому что она привязана к классу, а не к экземпляру. для доступа к списку вы можете просто набрать Define_Companies.company_list.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...