首页 > 解决方案 > Python-保存对象列表及其属性

问题描述

我正在尝试保存一个对象列表及其相应的属性。在下面的例子中你可以看到我首先定义了对象和属性的列表,然后保存。保存文件后,我删除列表以显示它是空的,但是当我调用加载函数时,我的列表仍然是空白的。有谁知道为什么?

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
[]

标签: pythonlistobject

解决方案


Define_Companies().company_list.clear()在保存函数之前调用,这会清除列表中的所有元素。您正在尝试保存一个空列表。


另请注意,您不需要实例Define_Companies来访问类变量company_list,因为它绑定到类,而不是实例。要访问列表,您只需键入Define_Companies.company_list.


推荐阅读