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 logging模块学习笔记
May 24 Python
python实现类的静态变量用法实例
May 08 Python
python开发之函数定义实例分析
Nov 12 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
python实现顺时针打印矩阵
Mar 02 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
python实现拼接图片
Mar 23 Python
如何在mac版pycharm选择python版本
Jul 21 Python
如何利用Python实现一个论文降重工具
Jul 09 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接口中interface存在的意义
2013/06/27 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
js中的闭包学习心得
2018/02/06 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
python错误处理详解
2014/09/28 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
成品仓管员岗位职责
2013/12/11 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
红旗渠导游词
2015/02/09 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书