美文网首页
python单例实现

python单例实现

作者: Geek_C | 来源:发表于2018-06-30 16:17 被阅读0次

    单例模式

    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。

    __new__()实现方法

    可以使用 __new__ 来控制实例的创建过程,下面是一种写法

    class Singleton(object):
        _instance = None
        def __new__(cls, *args, **kw):
            if not cls._instance:
                cls._instance = super(Singleton, cls).__new__(cls, *args, **kw)  
            return cls._instance  
    
    class MyClass(Singleton):  
        a = 1
    

    在上面的代码中,我们将类的实例和一个类变量 _instance 关联起来,如果 cls._instance 为 None 则创建实例,否则直接返回 cls._instance

    装饰器实现

    我们可以使用装饰器(decorator)来装饰某个类,使其只能生成一个实例

    from functools import wraps
    def singleton(cls):
        instances = {}
        @wraps(cls)
        def getinstance(*args, **kw):
            if cls not in instances:
                instances[cls] = cls(*args, **kw)
            return instances[cls]
        return getinstance
    
    @singleton
    class MyClass(object):
        a = 1
    

    相关文章

      网友评论

          本文标题:python单例实现

          本文链接:https://www.haomeiwen.com/subject/oifayftx.html