【设计模式与pickle模块】

设计模式

设计模式是前辈们发明的经过反复验证用于解决固定问题的固定套路
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

设计模式的分类

经典的《设计模式》一书归纳出23种设计模式,这23种模式又可归为,创建型、结构型和行为型3大类

设计模式之单例模式(23种之一)、

单例模式的意图

保证一个类仅有一个实例,并提供一个访问它的全局访问点。用于节省资源。

class Single(type):
    new_obj = None

    def __call__(self, *args, **kwargs):
        if not self.new_obj:
            obj = super().__call__(*args, **kwargs)
            self.new_obj = obj
            return self.new_obj
        return self.new_obj


class MyClass(metaclass=Single):
    def __init__(self, name):
        self.name = name


obj1 = MyClass('jason')
obj2 = MyClass('tony')
print(id(obj1), id(obj2))
print(obj1.__dict__, obj2.__dict__)


执行结果:
在这里插入图片描述
通过执行结果我们可以看出:一个类永远只允许一个实例化对象,不管多少个进行实例化,都返回第一个实例化的对象

pickle模块

Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化。也就是说,pickle 可以实现 Python 对象的存储及恢复。
pickle 模块提供了以下 4 个函数供我们使用:

dumps():将 Python 中的对象序列化成二进制对象,并返回;
loads():读取给定的二进制对象数据,并将其转换为 Python 对象;
dump():将 Python 中的对象序列化成二进制对象,并写入文件;
load():读取指定的序列化数据文件,并返回对象。

import pickle

class MyClass(object):
    school = 'school'
    def __init__(self, name):
        self.name = name
    def choose_course(self):
        print('%s正在选课'%self.name)
obj = MyClass('jason')
print(obj.school)
obj.choose_course()

# pickle可以
# with open(r'%s'%obj.name,'wb') as f:
#     pickle.dump(obj, f)

with open(r'jason','rb') as f:
    data = pickle.load(f)
print(data)
print(data.name)
print(data.school)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值