Python 单例设计模式用法实例分析


Posted in Python onSeptember 23, 2019

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

demo.py(单例):

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

运行结果:

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

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

class MusicPlayer(object):
  # 类属性 记录对象引用
  instance = None
  # 标记是否执行过初始化动作
  init_flag = False
  def __new__(cls, *args, **kwargs):
    # 1. 判断类属性是否是空对象
    if cls.instance is None:
      # 2. 调用父类的方法,为第一个对象分配空间
      cls.instance = super().__new__(cls)
    # 3. 返回类属性保存的对象引用
    return cls.instance
  def __init__(self):
    # 1. 判断是否执行过初始化动作
    if MusicPlayer.init_flag:
      return
    # 2. 如果没有执行过,再执行初始化动作
    print("初始化播放器")
    # 3. 修改类属性的标记
    MusicPlayer.init_flag = True
# 创建多个对象
player1 = MusicPlayer()
print(player1)
player2 = MusicPlayer()
print(player2)

运行结果:

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

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

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

Python 相关文章推荐
跟老齐学Python之字典,你还记得吗?
Sep 20 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python利用拉链法实现字典方法示例
Mar 25 Python
python遍历文件夹下所有excel文件
Jan 03 Python
Python数据类型之Number数字操作实例详解
May 08 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
Python3分析处理声音数据的例子
Aug 27 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
python中JWT用户认证的实现
May 18 Python
Python新手学习函数默认参数设置
Jun 03 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 #Python
详解Python3定时器任务代码
Sep 23 #Python
python应用文件读取与登录注册功能
Sep 23 #Python
Python爬虫 urllib2的使用方法详解
Sep 23 #Python
Python 正则表达式爬虫使用案例解析
Sep 23 #Python
python处理document文档保留原样式
Sep 23 #Python
python 进程间数据共享multiProcess.Manger实现解析
Sep 23 #Python
You might like
PHP可变函数的使用详解
2013/06/14 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
Python for循环中的陷阱详解
2018/07/13 Python
利用python循环创建多个文件的方法
2018/10/25 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
python实现简单图书管理系统
2019/11/22 Python
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
结婚典礼证婚词
2014/01/11 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
详解Python内置模块Collections
2022/03/22 Python
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android