python中的单例模式

来源:互联网 发布:phpcms 模板使用php 编辑:程序博客网 时间:2024/06/09 20:47

单例模式

1、定义一个单例类

class Singleton(object):    # 定义一个类的私有变量,控制new方法的执行。    __instance = None    # 定义一个类的私有变量,控制init方法的执行    __inited = None    def __new__(cls, *args, **kwargs):        if cls.__instance is None:            cls.__instance = object.__new__(cls)        return cls.__instance    def __init__(self, args1, args2):        if self.__inited is None:            self.args1 = args1            self.args2 = args2            # 更改类的私有属性,要使用类对象进行更改。            Singleton.__inited = Trues1 = Singleton('first', 1)s2 = Singleton('second', 2)print(id(s1))print(s1.args1, s1.args2)print(id(s2))print(s2.args1, s2.args2)

2、执行结果

4301237216first 14301237216first 1

3、说明

在类中定义了两个类的私有属性instance和inited,通过判断instance属性实现了对new方法执行的控制,如果instance是None,则创建对象并赋值给instance,如果instance等于之前创建的对象,则直接返回。inited属性控制init方法的初始化,控制方式和instance类似。