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备份文件的脚本
Aug 11 Python
Python 迭代器与生成器实例详解
May 18 Python
Python爬豆瓣电影实例
Feb 23 Python
tensorflow获取变量维度信息
Mar 10 Python
用TensorFlow实现戴明回归算法的示例
May 02 Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
Python OrderedDict字典排序方法详解
May 21 Python
keras 如何保存最佳的训练模型
May 25 Python
python 下划线的多种应用场景总结
May 12 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
一个SQL管理员的web接口
2006/10/09 PHP
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
PHP多进程编程实例
2014/10/15 PHP
PHP使用函数用法详解
2018/09/30 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
python实现百度语音识别api
2018/04/10 Python
基于python实现学生信息管理系统
2019/11/22 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
django rest framework serializers序列化实例
2020/05/13 Python
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
企业厂长岗位职责
2013/12/17 职场文书
毕业生的自我评价分享
2013/12/18 职场文书
银行门卫岗位职责
2013/12/29 职场文书
致800米运动员广播稿
2014/02/16 职场文书
志愿服务心得体会
2016/01/15 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Oracle中update和select 关联操作
2022/01/18 Oracle
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android