Python中的单例设计模式
1)设计模式:
是前人工作的总结和提炼。通常,被人们广泛流传的设计模式。
某一问题的特定解决方案,使用设计模式是为了可重用代码,是代码更容易被人理解, 增加代码的可用性。
2)单例设计模式:
python解释器在执行对象的创建的时候,具体执行的操作为:为对象分配内存空间、为对象初始化。
# 实例:实现多个对象创建相同的内存空间
class MusicPlayer(object):
instance = None # 设置类属性,用来判断是否有对象得到内存空间
# 使用内置函数进行空间的分配
def __new__(cls,*args,**kwargs):
# cls:哪个类调用,就传递哪个类;*args:元组参数;**kwargs:字典参数
# 为对象分配内存
if cls.instance == None: # 空的时候,分配空间
cls.instance = object.__new__(cls)
return cls.instance
def __init__(self):
print "初使化播放器"
# 创建播放器对象
player1 = MusicPlayer()
print player1
player2 = MusicPlayer()
print palyer2
# 注释:此时,对象player1和player2返回的内存地址是相同的
3)单例模式的扩展:
# 实例:实现多个对象分配空间,只分配一次;只初始化一次
class MusicPlayer(object):
instance = None # 设置类属性,用来判断是否有对象得到内存空间
init_flag = 0 # 0表示还没有初始化;1代表已经初始化
# 使用内置函数进行空间的分配
def __new__(cls,*args,**kwargs):
# cls:哪个类调用,就传递哪个类;*args:元组参数;**kwargs:字典参数
# 为对象分配内存
if cls.instance == None: # 空的时候,分配空间
cls.instance = object.__new__(cls)
return cls.instance
# 把解释器的到的分配了空间的对象的引用,给对象的初始化方法
def __init__(self):
if MusicPlayer.init_flag == 0:
print "初使化播放器"
MusicPlayer.init_flag = 1
else:
return # 当已经初始化后,再执行就直接返回
# 创建播放器对象
player1 = MusicPlayer()
print player1
player2 = MusicPlayer()
print palyer2
# 注释:此时的两个对象,具有相同的内存地址,且只实例化了一次
Python中的单例设计模式的更多相关文章
- Python中的单例设计
01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码.让代码更容易被他人理解.保 ...
- OC中的单例设计模式及单例的宏抽取
// 在一个对象需要重复使用,并且很频繁时,可以对对象使用单例设计模式 // 单例的设计其实就是多alloc内部的allocWithZone下手,重写该方法 #pragma Person.h文件 #i ...
- iOS 中的单例设计模式
单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单 ...
- IOS中的单例设计模式
单例设计模式是IOS开发中一种很重要很常用的一种设计模式.它的设计原理是无论请求多少次,始终返回一个实例,也就是一个类只有一个实例.下面是苹果官方文档中关于单例模式的图片: 如图所示,左边的图是默认的 ...
- Java中常用来处理时间的三个类:Date、Calendar、SimpleDateFormate,以及Java中的单例设计模式:懒汉式、饿汉式以及静态内部类式
(一)java.util.Date类 1.该类有一个long类型的属性:用来存放时间,是用毫秒数的形式表示,开始的日期是从1970年1月1号 00:00:00. 2.该类的很多方法都已经过时,不 ...
- 转--python 中写单例
原文地址 原文地址2 Python中的单例模式的几种实现方式的及优化 阅读目录(Content) 单例模式 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法 ...
- java中的单例设计模式
单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. 3.单例类必须给所有其他对象提供这一实例. 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供 ...
- python中的单例
使用__new__ 因为一个类每一次实例化的时候,都会走它的__new__方法.所以我们可以使用__new__来控制实例的创建过程,代码如下: class Single: instance = Non ...
- iOS——Swift开发中的单例设计模式(摘译,非原创)
最近在开发一个小的应用,遇到了一些Objective-c上面常用的单例模式,但是swift上面还是有一定区别的,反复倒来倒去发现不能按常理(正常的oc to swift的方式)出牌,因此搜索了一些帖子 ...
随机推荐
- JS正则表达式从入门到入土(4)—— 预定义类与边界
预定义类 正则表达式提供预定义类来匹配常见的字符类 字符 等价类 含义 . [^\r\n] 除了回车符和换行符以外的所有字符 \d [0-9] 数字字符 \D [^0-9] 非数字字符 \s [\t\ ...
- imx6q android 添加开机启动脚本
1.在xx/out/target/product/sabresd_6dq/root/init.rc中添加以下内容 ========================================== ...
- 20145314郑凯杰《信息安全系统设计基础》第八周复习总结 Part A
20145314郑凯杰<信息安全系统设计基础>第八周复习总结 Part A 学习知识点内容总结 复习线索:http://group.cnblogs.com/topic/73069.html ...
- React绑定this的三种方式
React可以使用React.createClass.ES6 classes.纯函数3种方式构建组件.使用React.createClass会自动绑定每个方法的this到当前组件,但使用ES6 cla ...
- makefile中的word函数作用是什么
答:用来取单词的函数,示例如下: $(word 1,hello jello yello) 上面的语句执行后的结果为hello,意为取字符串的第一个单词
- [洛谷P4918]信仰收集
题目背景 随着各种势力的迁入,守矢神社丧失了不少信仰现在,为了挽回香火日益惨淡的神社,八坂神奈子派遣神社的风祝早苗去人类村落收集信仰 题目描述 你可以将村落看成一个m个点的有向无环图(编号从1−m), ...
- 【目标检测】R-CNN系列与SPP-Net总结
目录 1. 前言 2. R-CNN 2.0 论文链接 2.1 概述 2.2 pre-training 2.3 不同阶段正负样本的IOU阈值 2.4 关于fine-tuning 2.5 对文章的一些思考 ...
- 转载:Service Mesh:重塑微服务市场--敖小剑
转载地址:https://skyao.io/talk/201805-service-mesh-rebuild-microservice-market/ 重点: 不要太过关注 Service Mesh ...
- spring boot2.1读取 apollo 配置中心3
上篇记录了springboot读取apollo的配置信息,以及如何获取服务端的推送更新配置. 接下来记录一下,如何获取公共namespace的配置. 上文中使用如下代码共聚公共命名空间的配置: @Ap ...
- hand first python 选读(1)
列表(list) 基本操作 比如说我要整理一个近期热映的电影列表: movies = ["venom", "My Neighbor Totor", " ...