经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
Python 单例设计模式用法实例分析
来源:jb51  时间:2019/9/24 8:34:01  对本文有异议

本文实例讲述了Python 单例设计模式用法。分享给大家供大家参考,具体如下:

demo.py(单例):

  1. class MusicPlayer(object):
  2. # 类属性 记录对象引用
  3. instance = None
  4. def __new__(cls, *args, **kwargs):
  5. # 1. 判断类属性是否是空对象
  6. if cls.instance is None:
  7. # 2. 调用父类的方法,为第一个对象分配空间
  8. cls.instance = super().__new__(cls)
  9. # 3. 返回类属性保存的对象引用
  10. return cls.instance
  11. # 创建多个对象
  12. player1 = MusicPlayer()
  13. print(player1)
  14. player2 = MusicPlayer()
  15. print(player2)
  16.  

运行结果:

<__main__.MusicPlayer object at 0x019558B0>
<__main__.MusicPlayer object at 0x019558B0>

demo.py(__init__初始化方法只执行一次):

  1. class MusicPlayer(object):
  2. # 类属性 记录对象引用
  3. instance = None
  4. # 标记是否执行过初始化动作
  5. init_flag = False
  6. def __new__(cls, *args, **kwargs):
  7. # 1. 判断类属性是否是空对象
  8. if cls.instance is None:
  9. # 2. 调用父类的方法,为第一个对象分配空间
  10. cls.instance = super().__new__(cls)
  11. # 3. 返回类属性保存的对象引用
  12. return cls.instance
  13. def __init__(self):
  14. # 1. 判断是否执行过初始化动作
  15. if MusicPlayer.init_flag:
  16. return
  17. # 2. 如果没有执行过,再执行初始化动作
  18. print("初始化播放器")
  19. # 3. 修改类属性的标记
  20. MusicPlayer.init_flag = True
  21. # 创建多个对象
  22. player1 = MusicPlayer()
  23. print(player1)
  24. player2 = MusicPlayer()
  25. print(player2)
  26.  

运行结果:

初始化播放器
<__main__.MusicPlayer object at 0x01795B30>
<__main__.MusicPlayer object at 0x01795B30>

更多关于Python相关内容可查看jb51专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号