Python持久化管理   pickle

发布时间:2019-09-25 08:24:51编辑:auto阅读(1782)

    python 面向对象编程  

    看了一下python也可以用面向对象 就试着将java写法 就在python上试了一下 顺便熟悉一下语法  还不错。。。 希望大神指点更简结 灵巧 写法 请留求评论j_0002.gif

     

    import pickle
    import random
    #author Q237356573
    
    #.........Base
    class Base_number():
        def __init__(self,all,Prime,single):
            self._all=all
            self._Prime=Prime
            self._single=single
        def Show_all(self):
            return self._all
        def Show_Prime(self):
            return self._Prime
        def Show_single(self):
            return self._single
    
    
    #操作对象
    class Writ_base_number():
    #all 全部
        def set_all(self,all):
            self._all=all
        def get_all(self):
            return self._all
    #素数[]
        def set_Prime(self,Prime):
            self._Prime=Prime
        def get_Prime(self):
            return self._Prime
    #质数[]
        def set_single(self,single):
            self._single=single
        def get_single(self):
            return self._single
    
    #Writ_File_catalog文件目录
        def set_catalog(self,catalog,wb):
            self._catalog=open(catalog,wb)
        def get_catalog(self):
            return self._catalog
        def show_catalog(self):  #测试
            print("存入目录:"+self._catalog.name)
    
    #测试 Writ obj  参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。
    # protocol的值还可以是1或2,表示以二进制的形式序列化
        def Writ_obj_file(self,writobj,catalog):
            pickle.dump(writobj,catalog,0)
    #测试 Read obj
        def Read_obj_file(self):
          return  pickle.load(self._catalog)
    
    
    #计算函数
        def for_Three_add(self):
            obj_name=[]
            f=Writ_base_number()#实例对象
            mark=['A:','B:','C:']
            for b in mark:
                num=random.sample([i for i in range(1,100)],25) #不重复随机数
                f.set_all(b+str(num))#存入全部
                A=[]
                B=[]
                for a in num:
                    if a%2 != 0:
                        A.append(a) #质数
                    else:
                        B.append(a) #素数
                #writ 封装对象
                f.set_Prime(B)
                f.set_single(A)
                obj_name.append(Base_number(f.get_all(),f.get_Prime(),f.get_single()))
            return obj_name
    
    '''
    #mail writ方法
    Operation=Writ_base_number()
    Operation.set_catalog('c:\\file2.pkl','wb')
    base_obj=Operation.for_Three_add()
    Operation.Writ_obj_file(base_obj,Operation.get_catalog())
    Operation.get_catalog().close()
    
    '''
    #mailread 读出
    R=Writ_base_number()
    R.set_catalog("c:\\file2.pkl",'rb')
    obj_list=R.Read_obj_file()
    R.get_catalog().close()
    #迭代
    for a in obj_list:
        print("全部数_"+str(a.Show_all()))
        print("素数"+str(a.Show_single()))
        print("质数"+str(a.Show_Prime()))
        print()


    wKiom1j_gHvSdajYAAByZJcgmOQ729.png-wh_50

关键字