python修飾器實現單例模式

所謂單例模式就是指,一個類只對應一個實例,便於實現對實例數量的控制。

這裏給出一個通用範例,擴展的話自己看着辦吧

def singleton(cls):
    instances={}
    def getinstance(*args,**kw):
        if cls not in instances.keys():
            instances[cls]=cls(*args,**kw)
        return instances[cls]

    return getinstance

@singleton
class single(object):
    def __init__(self,name):
        self.name=name
        return


驗證如下:

a=single("name")

b=single("www")

a is b #True

a.name #name

b.name #name

上述過程正好驗證了一個類只對應一個實例,b的設置都會被a的設置覆蓋,因爲b只是對象a的另一個名字而已


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章