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中的mock库对Python代码进行模拟测试
Apr 16 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
python正则表达式实例代码
Mar 03 Python
如何在sublime编辑器中安装python
May 20 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 Python
python利用文件时间批量重命名照片和视频
Feb 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
Python常用内置函数总结
2015/02/08 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Apache如何部署django项目
2017/05/21 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python读取Kafka实例
2019/12/23 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
pandas针对excel处理的实现
2021/01/15 Python
捷克玩具商店:Bambule
2019/02/23 全球购物
2014社区三八妇女节活动方案
2014/03/30 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
教师师德工作总结2015
2015/07/22 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android