Python中的单例设计模式

本文介绍了设计模式的概念,并详细解析了单例设计模式的两种实现方式。一种是在对象创建时即确保所有实例指向同一内存地址;另一种则在此基础上进行了扩展,确保对象不仅拥有相同的内存地址,而且仅初始化一次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

# 注释:此时的两个对象,具有相同的内存地址,且只实例化了一次

 

转载于:https://www.cnblogs.com/uthnb/p/9622861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值