Python的单例模式
单例——让类创建的对象,在系统中只有唯一的一个实例
定义一个 类属性,初始值是
None
,用于记录 单例对象的引用重写
__new__
方法如果 类属性
is None
,调用父类方法分配空间,并在类属性中记录结果返回 类属性 中记录的 对象引用
class MusicPlayer(object):
# 定义类属性记录单例对象引用instance = None
def __new__(cls, *args, **kwargs):
# 1. 判断类属性是否已经被赋值if cls.instance is None:cls.instance = super().__new__(cls)
# 2. 返回类属性的单例引用return cls.instance
只执行一次初始化工作
在每次使用类名()创建对象时,Python的解释器都会自动调用两个方法:
__new__
分配空间__init__
对象初始化
在上一小节对
__new__
方法改造之后,每次都会得到 第一次被创建对象的引用但是:初始化方法还会被再次调用
需求
让 初始化动作 只被 执行一次
解决办法
定义一个类属性
init_flag
标记是否 执行过初始化动作,初始值为False
在
__init__
方法中,判断init_flag
,如果为False
就执行初始化动作然后将
init_flag
设置为True
这样,再次 自动 调用
__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):
if not MusicPlayer.init_flag:print("初始化音乐播放器")
MusicPlayer.init_flag = True
# 创建多个对象
player1 = MusicPlayer()
print(player1)
player2 = MusicPlayer()
print(player2)
Python的单例模式相关推荐
- Python设计模式-单例模式
Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...
- python采用单例模式游戏_Python实现Singleton模式的方式详解
前言 使用python实现设计模式中的单例模式.单例模式是一种比较常用的设计模式,其实现和使用场景判定都是相对容易的.本文将简要介绍一下python中实现单例模式的几种常见方式和原理.一方面可以加深对 ...
- python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- python实现单例模式的三种方式及相关知识解释
python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...
- Python 实现单例模式
Python 实现单例模式 单例模式是一种软件设计模式. 在面向对象编程中,通过单例模式只能创建一个类实例,也就是一个类永远只有一个实例对象. 在工作中,为了确保某一个类只会创建出一个实例,就需要使用 ...
- Python实现单例模式的几种方式
认识单例模式 含义 单例模式是一种常用的软件设计模式,在应用这个模式时,类只会生成一个实例对象. 换句话说,单例模式确保某个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例,当我们在程序中的 ...
- Python 设计模式: 单例模式(singleton pattern)
2019独角兽企业重金招聘Python工程师标准>>> 如果想在整个程序的运行过程中,某个类只有一个实例的话,可以通过单例模式来实现. 在 Python 中实现单例模式有很多种方式, ...
- Python创建单例模式的5种方法
单例模式(Singleton Pattern)是一种常用的软件设计模式,是指一个类的实例从始至终只能被创建一次,同时它提供一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例:为了 ...
- python实现单例模式的三种方法
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 其目 ...
- python:单例模式--使用__new__(cls)实现
单例模式:即一个类有且仅有一个实例. 那么通过python怎么实现一个类只能有一个实例呢. class Earth:"""假如你是神,你可以创造地球"" ...
最新文章
- python统计字母空格个数_python统计字母、空格、数字等字符个数的实例
- Nginx相关基础配置详解
- 微软发布新的Azure Pipelines功能和集成
- 【HDU 2028】Lowest Common Multiple Plus
- 使用python+opencv和pillow以及numpy对图像进行旋转,以及解决图像旋转过程中出现的黑边问题
- Python之迭代器和生成器
- 微众WeCross 跨链平台(2)网络拓扑
- 开源日志库Logger的使用秘籍
- e.preventdefault() 别滥用
- 据说,80%的人没有真正理解了Spring的依赖注入
- Dockerfile 学习:Docker Alpine PHP 安装扩展
- tarjan 算法模板
- 代码整洁之道之总结篇
- [EE261学习笔记] 4.常用的几个傅里叶变换相关公式
- 转鼓式精密过滤器滤网
- iphone 添加网易邮箱(126/163)踩坑(ios16)
- 92-Kafka详解
- Elastic:data_hot,data_warm,data_cold角色有什么用
- 对坐标的曲线积分求做功_曲线积分与曲面积分(前篇 曲线积分-坐标曲线积分-格林公式)...
- python 中角度与弧度间的转换