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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
2款Python内存检测工具介绍和使用方法
Jun 01 Python
python中实现定制类的特殊方法总结
Sep 28 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Python检测网站链接是否已存在
Apr 07 Python
Python中的取模运算方法
Nov 10 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
pytorch Dropout过拟合的操作
May 27 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实时显示输出
2008/10/02 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP会话控制实例分析
2016/12/24 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
node使用request请求的方法
2019/12/20 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
python使用turtle库绘制时钟
2020/03/25 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
超市采购员岗位职责
2014/02/01 职场文书
公司贷款承诺书
2014/05/30 职场文书
档案管理员岗位职责
2015/02/12 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL