您的位置: 首页 > IT文章 > Python中的单例设计模式 Python中的单例设计模式 分类: IT文章 • 2025-01-09 13:47:14 1)设计模式: 是前人工作的总结和提炼。通常,被人们广泛流传的设计模式。 某一问题的特定解决方案,使用设计模式是为了可重用代码,是代码更容易被人理解, 增加代码的可用性。 2)单例设计模式: python解释器在执行对象的创建的时候,具体执行的操作为:为对象分配内存空间、为对象初始化。 # 实例:实现多个对象创建相同的内存空间 class MusicPlayer(object): instance = None # 设置类属性,用来判断是否有对象得到内存空间 # 使用内置函数进行空间的分配 def __new__(cls,*args,**kwargs): # cls:哪个类调用,就传递哪个类;*args:元组参数;**kwargs:字典参数 # 为对象分配内存 if cls.instance == None: # 空的时候,分配空间 cls.instance = object.__new__(cls) return cls.instance def __init__(self): print "初使化播放器" # 创建播放器对象 player1 = MusicPlayer() print player1 player2 = MusicPlayer() print palyer2 # 注释:此时,对象player1和player2返回的内存地址是相同的 3)单例模式的扩展: # 实例:实现多个对象分配空间,只分配一次;只初始化一次 class MusicPlayer(object): instance = None # 设置类属性,用来判断是否有对象得到内存空间 init_flag = 0 # 0表示还没有初始化;1代表已经初始化 # 使用内置函数进行空间的分配 def __new__(cls,*args,**kwargs): # cls:哪个类调用,就传递哪个类;*args:元组参数;**kwargs:字典参数 # 为对象分配内存 if cls.instance == None: # 空的时候,分配空间 cls.instance = object.__new__(cls) return cls.instance # 把解释器的到的分配了空间的对象的引用,给对象的初始化方法 def __init__(self): if MusicPlayer.init_flag == 0: print "初使化播放器" MusicPlayer.init_flag = 1 else: return # 当已经初始化后,再执行就直接返回 # 创建播放器对象 player1 = MusicPlayer() print player1 player2 = MusicPlayer() print palyer2 # 注释:此时的两个对象,具有相同的内存地址,且只实例化了一次