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之永远强大的函数
Sep 14 Python
python中Genarator函数用法分析
Apr 08 Python
Djang中静态文件配置方法
Jul 30 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
Python3多线程基础知识点
Feb 19 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
Python tkinter常用操作代码实例
Jan 03 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
如何创建一个Flask项目并进行简单配置
Nov 18 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中文件下载功能实现超详细流程分析
2012/06/13 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
简单的js计算器实现
2016/10/26 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
python运行其他程序的实现方法
2017/07/14 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
放射科岗位职责
2015/02/14 职场文书
七一建党节慰问信
2015/02/14 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
导游词之岳阳楼
2019/09/25 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
SQL中的三种去重方法小结
2021/11/01 SQL Server
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server