Python Singleton(单例模式)代码示例

发布时间:2019-08-13编辑:脚本学堂
本文介绍了python单例模式的例子,python Singleton单例模式与其它语言中一样,经典而实用。有需要的朋友,参考下吧。

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.