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中ConfigParse模块的用法
Sep 29 Python
python处理二进制数据的方法
Jun 03 Python
Python中列表和元组的使用方法和区别详解
Dec 30 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
Random 在 Python 中的使用方法
Aug 09 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
Matlab如何实现矩阵复制扩充
Jun 02 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快速排序quicksort实例详解
2016/09/28 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python中的默认参数实例分析
2018/01/29 Python
python中join()方法介绍
2018/10/11 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
解决Python使用列表副本的问题
2019/12/19 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
Linux面试题LINUX系统类
2014/11/19 面试题
无工作经验者个人求职信范文
2013/12/22 职场文书
部队学习十八大感言
2014/01/11 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
公司离职证明标准格式
2014/11/18 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
Python中tqdm的使用和例子
2022/09/23 Python