突然想寫一個Python的單例
阿新 • • 發佈:2018-12-28
單例模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個例項。即一個類只有一個物件例項 注意: 1、單例類只能有一個例項。 2、單例類必須自己建立自己的唯一例項。 3、單例類必須給所有其他物件提供這一例項。
我寫的當然是python了:
元類:
這裡我們其實還需要真的元類是怎麼回事:http://python.jobbole.com/88795/ 這個篇文章寫的是真的不錯
學懂元類,你只需要知道兩句話:
- 道生一,一生二,二生三,三生萬物
- 我是誰?我從哪來裡?我要到哪裡去?
這個網站介紹的元類真的不錯
第一種(也是最簡單的一種):
class SingLeton(object): _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(SingLeton,cls).__new__(cls, *args, **kwargs) return cls._instance
第二種,也是python中獨有的的一種(先要明白python中的模組和包)
在一個py檔案中,例項化一個物件,而其他檔案匯入這個例項物件時候 ,它就是一個單例
問題來了----為什麼呢?
因為python中中,檔案只匯入一次,再次匯入時候還是最初py檔案中的例項物件