python对象序列化
- pickling和unpickling
python对象的序列化和反序列化:通过将对象序列化可以将其存储在变量或者文件中(pickling),可以保存当时对象的状态,实现其生命周期的延长。并且需要时可以再次将这个对象读取出来(unpickling)。 - 原理:
将对象所属于的类和所以属性值保存下来,可以通过这些值重定义对象,从而还原对象。 - 实现:
使用pickle模块- 方法:
- dumps(obj):保存在变量中;
- loads(byte_data):从变量中还原;
- dump(obj,file):保存在文件中;
- load(byte_data,file):从文件中还原。
- 示例:
import pickle #自定义类 class Student: def __init__(self,n,a,h): self.name = n self.age = a self.height = h def age_add(self,year): self.age += year self.height += year*5 stu01 = Student('wang',17,170) print("初始状态:",stu01) print(stu01.age,stu01.height) stu01.age_add(2) print("两年后:",stu01) print(stu01.age,stu01.height) #dumps:将对象序列化存储在变量中 du = pickle.dumps(stu01) print(du) #load:还原对象 ret = pickle.loads(du) print("loads:",ret) print(ret.age,ret.height)
- 方法: