[英]python 33 pickle class instance in dict
以下代码
import pickle
class Member:
global members
try:
with open('member dict.txt','rb') as f:
members=pickle.load(f)
except:
members={}
def __init__(self,name,info,new=True):
if name in members and new:
print('name is taken')
self.name='Void'
self.info={'Void':'Void'}
else:
self.info=info
self.name=name
members[name]=self
if new:
with open('member dict.txt','wb') as f:
pickle.dump(members,f)
def __getstate__(self):
return[self.name,self.info]
def __setstate__(self,d):
return Member(d[0],d[1],False)
然后在空闲状态下(在第一个代码中按f5之后)
PJ=member('P',{})
我关闭空闲,然后重新打开并输入
members
它返回{}
我自己运行了代码, 第二次运行程序时,错误是AttributeError: 'module' object has no attribute 'Member'
。 您正在尝试在正确构建类之前释放类。 为了扩展第一个注释,将members
放入类定义是使您的代码失败的原因。 将其移到类定义下方,它将起作用。
class Member:
def __init__(self, name, info, new=True):
...
...
try:
with open('member dict.txt', 'rb') as f:
members = pickle.load(f)
except Exception as e:
members = {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.