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简单读取大文件的方法
Jul 01 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
python如何爬取个性签名
Jun 19 Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
python多线程同步实例教程
Aug 11 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 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图像验证码生成代码
2017/06/08 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
vue axios 二次封装的示例代码
2017/12/08 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
玩转python爬虫之cookie使用方法
2016/02/17 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
地理教师岗位职责
2014/03/16 职场文书
儿童生日会策划方案
2014/05/15 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript