单例模式及pickle模块

单例模式及pickle模块

单例模式

​ 在IT行业中一共有23种设计模式,这些设计模式又可以分为三大类:创建型、结构型、行为型。设计模式是前辈们发明用于解决固定问题的固定套路。

​ 我们今天讲一下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('oscar')
obj2 = MyClass('jason')
print(MyClass.new_obj)
print(id(obj1),id(obj2))
print(obj1.__dict__,obj2.__dict__)

pickle模块

该模块只支持python,兼容性很差,但是该模块可以将对象保存到文件中,并且取出来之后还可以使用对象的功能。

import pickle

class MyClass():
    def __init__(self,name):
        self.name = name
    def run(self):
        return '你好'

obj = MyClass('oscar')

# with open('oscar','wb') as f:  # 只支持二进制模式,所以要用b模式
#     pickle.dump(obj,f)  # 保存到文件
#
with open('oscar','rb') as f:
    res = pickle.load(f)  # 读取文件

print(res.name)  # oscar
print(res.run())  # 你好

通过对象获取类对应的字符串名称

class MyClass():
    def __init__(self,name):
        self.name = name
        
# 固定方法
obj = MyClass('oscar')
print(obj.__class__.__name__)  # MyClass

这里是IT小白陆禄绯,欢迎各位大佬的指点!!!

posted @ 2022-04-12 16:29  陆禄绯  阅读(46)  评论(0)    收藏  举报