1、单例设计模式
目的:类创建对象,在系统中只有唯一一个实例
每一个执行类名()返回对象在内存中,内存地址是相同的
2、__new__方法
使用类名()创建对象时,首先会使用__new__方法分配内存空间。
__new__方法是由object基类提供的内置静态方法,主要作用:
1.在内存中为对象分配空间
2.返回对象的引用
python解释器获得对象的引用后,将引用作为第一个参数传递给__init__方法
注意:重写__new__方法,必须要return super().__new__(cls),否则python解释器得不到获得内存空间的现象引用,就不会调用初始化方法。__new__方法是一个静态方法,在调用时需要主动传递cls参数。
class MusicPlayer(object):
def __new__(cls, *args, **kwargs):
return super().__new__(cls)
def __init__(self):
print("初始化音乐播放对象")
player = MusicPlayer()
print(player)
3、python中的单例
class MusicPlayer(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 MusicPlayer.init_flag:
print("初始化音乐播放对象")
MusicPlayer.init_flag = True
player = MusicPlayer()
print(player)
player1 = MusicPlayer()
print(player1)