单例模式及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小白陆禄绯,欢迎各位大佬的指点!!!


浙公网安备 33010602011771号