1. 程式人生 > >突然想寫一個Python的單例

突然想寫一個Python的單例

單例模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個例項。即一個類只有一個物件例項

注意:

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檔案中的例項物件