python中单例模式
一、单例模式设计基础概念:
二、
1 class Phone(object): 2 def __new__(cls, *args, **kwargs): 3 # 1、创建对象时,new方法会被自动化调用 4 print("创建对象,分配空间") 5 # 2、为对象分配空间 6 instance = super().__new__(cls) 7 # 3、返回对象的引用 8 return instance 9 def __init__(self): 10 print("手机初始化...") 11 12 # 实例化phone 13 phone = Phone() 14 print(phone)
- 如果类属性 is None,调用父类方法分配空间,并在类属性中记录结果
- 返回类属性中记录的对象引用
- 视图模型
- 代码:
1 class SingletonTest(object): 2 # 记录一个被创建对象的引用(此处加个类属性,主要是为了保障类返回地址的唯一性) 3 instance = None 4 5 # 记录是否执行过初始化方法(未做标记处理的话,在初始化过程中会被执行多次) 6 init_flag = False 7 def __new__(cls, *args, **kwargs): 8 # 1、判断类属性是否是空对象 9 if cls.instance is None: 10 # 2、调用父类的方法,为第一个对象分配对象 11 cls.instance = super().__new__(cls) 12 # 3、返回类属性保存的对象引用 13 return cls.instance 14 15 def __init__(self): 16 # 1、判断是否执行过初始化动作 17 if SingletonTest.init_flag: 18 return 19 # 2、如果没有执行过,在执行初始化动作 20 print("初始化对象。。。") 21 # 3、修改类属性标记 22 SingletonTest.init_flag = True 23 #print("初始化对象。。。") 24 25 singleton1 = SingletonTest() 26 print(singleton1) 27 singleton2 = SingletonTest() 28 print(singleton2)