备忘录模式: 打Boss之前角色生命值100%, 打boss失败,回档重新打。
Role类 存生命值, Role类有save方法用于存档,有load方法用于回档。save和load使用序列化和反序列化来实现
ps:传统备忘录模式是持久化在内存中的对象里,一般不用这种方式
代码略
备忘录模式:可在不破坏封装的前提下保存并恢复对象状态。Python语言对该模式提供了原生支持。
1、使用pickle对Python对象进行序列化和反序列化
PS1:函数、类也能序列化,文件对象不能序列化
PS2:如果自编的类其__dict__可以序列化,那么该类的实例就可以序列化
import pickle class Boy: def __init__(self, name, age): self.name = name self.age = age b = Boy("alex", 21) # 序列化 xulie = pickle.dumps(b) print(xulie) # 反序列化 b_cp = pickle.loads(xulie) print(b_cp.name, b_cp.age) print(isinstance(b_cp, Boy)) ''' b'\x80\x03c__main__\nBoy\nq\x00)\x81q\x01}q\x02(X\x04\x00\x00\x00nameq\x03X\x04\x00\x00\x00alexq\x04X\x03\x00\x00\x00ageq\x05K\x15ub.' alex 21 True '''
2、使用json序列化字典和列表