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 相关文章推荐
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
python递归删除指定目录及其所有内容的方法
Jan 13 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python创建与遍历List二维列表的方法
Aug 16 Python
基于python实现把图片转换成素描
Nov 13 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
python中shell执行知识点
May 06 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
python ssh 执行shell命令的示例
Sep 29 Python
python3 kubernetes api的使用示例
Jan 12 Python
Django框架中模型的用法
Jun 10 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
自动跳转中英文页面
2006/10/09 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
javascript常见用法总结
2014/05/22 Javascript
Javascript实现单张图片浏览
2014/12/18 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
js初始化验证实例详解
2016/11/26 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
vue登录注册实例详解
2019/09/14 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
使用python模拟命令行终端的示例
2019/08/13 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Django 路由层URLconf的实现
2019/12/30 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
PHP如何设置和取得Cookie值
2015/06/30 面试题
关于毕业的广播稿
2014/01/10 职场文书
学校与家长安全责任书
2014/07/23 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
python 网络编程要点总结
2021/06/18 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android