1、重载__new__方法
复制代码 代码示例:
    class Singleton(object):  
        def __new__(cls, *args, **kwargs):  
            ''''' A 
pythonic singleton '''  
            if '_inst' not in vars(cls):  
                cls._inst = super().__new__(cls, *args, **kwargs)  
            return cls._inst  
        def __init__(self, *args, **kwargs):  
            pass 
2、使用装饰器
复制代码 代码示例:
    class SingletonDecorator(object):  
        def __init__(self, cls):  
            self._cls = cls  
            self._inst = None  
        def __call__(self, *args, **kwargs):  
            ''''' Over __call__ method. So the instance of this class 
            can be called as a function. '''  
            if not self._inst:  
                self._inst = self._cls(*args, **kwargs)  
            return self._inst  
      
    class DemoCls(object):  
        pass  
      
    DemoCls = SingletonDecorator(DemoCls)  
    # After this the DemoCls is bind with a SingletonDecorator instance  
    a = DemoCls()  
    b = DemoCls() 
3、使用python管理module的机制
复制代码 代码示例:
import sys  
    class MyCls(object):  
        def __init__(self, *args, **kwargs):  
            pass  
    sys.modules[__name__] = MyCls()  
    # After this statement, the test module is bind with a MyCls instance  
    # If you import this module in other module,www.jb200.com
    # test is a MyCls instance actually.