基本概念

单例模式:属于创建类型的一种常用的软件设计模式。所谓单例,就是整个程序有且只有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。

Python实现单例模式

使用new方法

class singleton(object):
    def __new__(cls,*args,**kw):
        if not hasattr(cls,'_instance'):
            orig = super(singleton,cls)
            cls._instance = orig.__new__(cls,*args,**kw)
        return cls._instance
class MyClass(singleton):
    a = 1            

装饰器

def singleton(cls,*args,**kw):
    instances={}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls(*args,**kw)
        return instances[cls]
    return getinstance
@singleton
class MyClass:
    pass

import方法

作为Python的模块是天然的单例模式

#mysingleton.py
class My_singleton(object):
    def foo(self):
        pass
my_singleton = My_singleton()

#to use
from mysingleton import my_singleton
mysingleton.foo()