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的Django框架中的URL配置与松耦合
Jul 15 Python
微信跳一跳辅助python代码实现
Jan 05 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
python函数修饰符@的使用方法解析
Sep 02 Python
python可视化text()函数使用详解
Feb 11 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
python判断正负数方式
Jun 03 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 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 n个不重复的随机数生成代码
2009/06/23 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python爬豆瓣电影实例
2018/02/23 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
html5的localstorage详解
2017/05/09 HTML / CSS
HTML5进度条特效
2014/12/18 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
自我评价个人范文
2013/12/16 职场文书
成品仓管员工作职责
2013/12/29 职场文书
纪检监察建议书
2014/05/19 职场文书
给客户的感谢信
2015/01/21 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL