【发布时间】:2020-12-23 09:45:44
【问题描述】:
我正在使用 Python 3.9,并尝试使用 pickle 存储对象。虽然,这个对象包含一个对象列表,其中包含另一个对象列表。
如果我创建第一个对象,使用 pickle 存储它,然后删除它并检索它,而不停止程序,我有另一个对象的列表。
如果我停止程序然后尝试检索它,另一个对象的列表似乎是空的。
我制作的课程是这样的:
class First():
list_of_Second = []
info = 0
def __init__(self,...,):
...
class Second():
list_of_Third = []
info = 0
...
class Third():
info = 0
...
def get_First_class_from_file(filename):
with open(filename, 'rb') as f:
return pickle.load(f)
所以,当我尝试从文件中检索我的课程时,我得到一个空的list_of_Second。检索第一类中的所有其他信息。
编辑,感谢@juanpa.arrivillaga 部分解决:
我正在使用类变量,所以它不起作用。如果我将列表放入构造函数中,我将使用实例变量,它将用于存储list_of_Second。虽然,list_of_Third 又是空的。代码如下所示:
class First():
info = 0
def __init__(self,...,):
list_of_Second = []
...
class Second():
info = 0
def __init__(self,...,):
list_of_Second = []
...
class Third():
info = 0
...
def get_First_class_from_file(filename):
with open(filename, 'rb') as f:
return pickle.load(f)
【问题讨论】:
-
因为您使用的是类变量。
-
感谢您的回复。所以它适用于 instance-vars 但我还有另一个问题。我想在这个文件中存储另一个对象的另一个列表。我正在为我的列表使用 instance-var,但它不再起作用了。
-
您确实必须提供minimal reproducible example。请查看How to Ask 并查看help center
-
好的,我更新了我的问题。
-
那不是minimal reproducible example。同样,请查看How to Ask 并查看help center