Python单例模式

在某些场景下,例如创建数据库操作对象,需要只实例化一个操作对象,这时候就要用到单例模式。

注意:在项目中,不同的Python文件调用单例时,最好使用绝对路径调用,或者同时保持相对路径调用,不然可能会出现两个异常,实例化的多个单例对象不相等。

1. 直接写单例的类(不带初始化参数)

class Singleton(object):
    __instance = None

    def __new__(cls, *args, **kwargs):
        if cls.__instance is None:
            cls.__instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        return cls.__instance

    def __init__(self):
        super(Singleton, self).__init__()


if __name__ == '__main__':
    s1 = Singleton()
    s2 = Singleton()
    print(s1 == s2)
    print(s1 is s2)
    print(id(s1), id(s2))

输出:

True
True
1303099836400 1303099836400

2. 直接写单例的类(带初始化参数)

 
 

你可能感兴趣的:(Python常用库总结,python,单例模式,开发语言)