什么是单例模式
单例是一种设计模式(单例模式,工厂模式,轮询模式) 代表一个类只能创建出一个对象 类似于win中的回收站等设计
__new__函数
python中object为所有类的父类 一切皆对象
# 创建对象的方法 __new__
def __new__(cls): # 子类中重写了 父类方法
# 调用父类的__new__ 创建对象
return object.__new__(cls) # 创建出一个对象
def __init__(self):
print("__init__函数")
单例模式代码实现
在创建对象的时候,进行判断. 如果创建过对象,那我就不创建了 如果没有创建过对象.调用父类的 object.__new__(cls)来创建对象
class Single(object):
# 定义一个属性 用来记录是否创建过对象
# 在变量的前面添加__ 表示这个属性是私有属性
# 只能在类的内部使用, 不能够在类的外部使用
__instance = None # 第一次置为None
# 重写__new__方法 在创建对象的时间 调用我们写的new方法
def __new__(cls): # cls值类class
# 创建对象 object.__new__(cls)
if cls.__instance is None: # 判读是否为None
# 创建对象
cls.__instance = object.__new__(cls)
return cls.__instance
a = Single()
b = Single()
# 以下输出结果一样
# id()函数返回对象的唯一标识符,标识符是一个整数
# Python中的所有对象都有其自己的唯一ID
print("id(a) :", id(a))
print("id(b) :", id(b))
运行结果(pycharm调试):
code 0 结束 程序正常退出