标签:one 使用 width 目的 引用 相同 作用 一个 pre
目的:让类创建对象,在系统中只有唯一的实例,让每一次创建的对象返回的内存地址都是相同的。
使用类名创建对象时,python解释器首先会调用__new__方法为对象分配空间
__new__方法是有object基类提供的静态方法,主要作用有两个:
python中的单例:
所以,在python中实现单例需要重写__new__方法,python中重写__new__方法非常固定,必须要返回return super().__new__(cls),否则解释器就得不到对象的引用就不会调用初始化方法,如图:
python中单例的实现方式:
None
,用于记录 单例对象的引用is None
,调用父类方法分配空间,并在类属性中记录结果
示例代码如下:
class Single(object): instance = None init_flag = False def __new__(cls, *args, **kwargs): if cls.instance is None: cls.instance = super().__new__(cls) return cls.instance def __init__(self): if not Single.init_flag: print("初始化对象") Single.init_flag = True s1 = Single() s2 = Single() print(s1) print(s2)
执行结果:
初始化对象 <__main__.Single object at 0x7f4d032f1d68> <__main__.Single object at 0x7f4d032f1d68>
标签:one 使用 width 目的 引用 相同 作用 一个 pre
原文地址:https://www.cnblogs.com/fengyuhao/p/9131732.html