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素数检测实例分析
Jun 15 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
python实现多人聊天室
Mar 31 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
python网络应用开发知识点浅析
May 28 Python
python实现列表的排序方法分享
Jul 01 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
python em算法的实现
Oct 03 Python
PyTorch的Debug指南
May 07 Python
opencv 分类白天与夜景视频的方法
Jun 05 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扩展编写点滴 技巧收集
2010/03/09 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
php获取图片信息的方法详解
2015/12/10 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
vue观察模式浅析
2018/09/25 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
深入讲解Python编程中的字符串
2015/10/14 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
2014年少先队工作总结
2014/12/03 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
法院答辩状格式
2015/05/22 职场文书
美丽的大脚观后感
2015/06/03 职场文书
结婚司仪主持词
2015/06/29 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript