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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
Python 自动化表单提交实例代码
Jun 08 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php注销代码(session注销)
2012/05/31 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
Python3实现定时任务的四种方式
2019/06/03 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
车辆工程专业求职信
2014/04/28 职场文书
就业意向书
2014/07/29 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python