python对象序列化

python对象序列化

  1. pickling和unpickling
    python对象的序列化和反序列化:通过将对象序列化可以将其存储在变量或者文件中(pickling),可以保存当时对象的状态,实现其生命周期的延长。并且需要时可以再次将这个对象读取出来(unpickling)。
  2. 原理:
    将对象所属于的类和所以属性值保存下来,可以通过这些值重定义对象,从而还原对象。
  3. 实现:
    使用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)
    

你可能感兴趣的:(学习笔记)