学习目标:
python单例设计模式
学习内容:
1、设计模式:前人工作的总结和提炼,针对某一特定问题的成熟的解决方案
使用设计模式:可重用代码、让代码更容易被他人理解、保证代码可靠性
2、单例设计模式:类创建的对象在系统中只有唯一的一个实例
每一次执行 类型() 返回的对象,内存地址都是相同的
代码:
class MusicPlayer(object):
instance = None # 记录是否分配过内存空间
init_flag = False # 记录是否执行过初始化
def __new__(cls, *args, **kwargs):
# 类方法中调用类属性用 cls.属性名
if cls.instance is None:
cls.instance = super().__new__(cls)
return cls.instance
"""
该代码初始化方法会被执行两次
def __init__(self):
print("初始化执行")
"""
"""该代码初始化方法会被执行仅一次"""
def __init__(self):
# 实例方法中调用类属性用 类名.属性名
if MusicPlayer.init_flag:
return
print("初始化执行")
MusicPlayer.init_flag = True
player1 = MusicPlayer()
player2 = MusicPlayer()
print(player1)
print(player2)
重写new方法,用instance始终记录第一次分配内存时的内存地址