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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
python中管道用法入门实例
Jun 04 Python
Python中文件的读取和写入操作
Apr 27 Python
python简单操作excle的方法
Sep 12 Python
浅谈Python中的bs4基础
Oct 21 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
django中cookiecutter的使用教程
Dec 03 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 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 socke 向指定页面提交数据
2008/07/23 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
让焦点自动跳转
2006/07/01 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
Nodejs学习item【入门手上】
2016/05/05 NodeJs
js从外部获取图片的实现方法
2016/08/05 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
Python监控主机是否存活并以邮件报警
2015/09/22 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
21岁生日感言
2014/02/27 职场文书
贷款委托书
2014/08/01 职场文书
应用心理学专业求职信
2014/08/04 职场文书
2014年教务工作总结
2014/12/03 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
详解Java实践之适配器模式
2021/06/18 Java/Android
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL