python - 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
[]
解决方案
您Define_Companies().company_list.clear()
在保存函数之前调用,这会清除列表中的所有元素。您正在尝试保存一个空列表。
另请注意,您不需要实例Define_Companies
来访问类变量company_list
,因为它绑定到类,而不是实例。要访问列表,您只需键入Define_Companies.company_list
.
推荐阅读
- grails - Grails 2.5.6 问题
- javascript - Javascript 将平面数据转换为嵌套对象
- amazon-web-services - 在让 pgAdmin4 在 Amazon EC2 上工作时遇到问题
- sql - 在 SQL 中查询以跳过第一个分隔符并选择第二个分隔符
- c# - 基于浏览器的身份验证对话框未能完成
- python - python中的频率表
- hive - SQL 派生包和项目详细信息
- java - 如何在 Junit 5 中注册 TestExecutionListener 并检测是否执行了所有测试
- java - 如何使用 Eclipse 文本编辑器将字符串显示/编辑/保存到 RCP 应用程序中?
- python - 在 python 3 中列出从 3 到 21 的素数