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)
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章