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绘图库Matplotlib的安装
Jul 03 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
Dec 25 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python简单区块链模拟详解
Jul 03 Python
Python代码太长换行的实现
Jul 05 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 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
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
Laravel日志用法详解
2016/10/09 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
windows下python和pip安装教程
2018/05/25 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
新教师工作感言
2014/02/16 职场文书
法制宣传日活动总结
2014/04/29 职场文书
教师节演讲稿
2014/05/06 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
旷工辞退通知书
2015/04/17 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL