單例模式及pickle模組
阿新 • • 發佈:2022-04-12
單例模式及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小白陸祿緋,歡迎各位大佬的指點!!!