Python实现单例模式的方式有哪些
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇"Python实现单例模式的方式有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这
千家信息网最后更新 2025年01月22日Python实现单例模式的方式有哪些
这篇"Python实现单例模式的方式有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Python实现单例模式的方式有哪些"文章吧。
简介:单例模式可以保证一个类仅有一个实例,并提供一个访问它的全局访问点。适用性于当类只能有一个实例而且客户可以从一个众所周知的访问点访问它,例如访问数据库、MQ等。
实现方式:
1、通过导入模块实现
2、通过装饰器实现
3、通过使用类实现
4、通过__new__ 方法实现
单例模块方式被导入的源码:singleton.py
# -*- coding: utf-8 -*-# time: 2022/5/17 10:31# file: singleton.py# author: tom# 公众号: 玩转测试开发class Singleton(object): def __init__(self, name): self.name = name def run(self): print(self.name)s = Singleton("Tom")
主函数源码:
# -*- coding: utf-8 -*-# time: 2022/5/17 10:51# file: test_singleton.py# author: tom# 公众号: 玩转测试开发from singleton import s as s1from singleton import s as s2# Method One:通过导入模块实现def show_method_one(): """ :return: """ print(s1) print(s2) print(id(s1)) print(id(s2))show_method_one()# Method Two:通过装饰器实现def singleton(cls): # 创建一个字典用来保存类的实例对象 _instance = {} def _singleton(*args, **kwargs): # 先判断这个类有没有对象 if cls not in _instance: _instance[cls] = cls(*args, **kwargs) # 创建一个对象,并保存到字典当中 # 将实例对象返回 return _instance[cls] return _singleton@singletonclass Demo2(object): a = 1 def __init__(self, x=0): self.x = xa1 = Demo2(1)a2 = Demo2(2)print(id(a1))print(id(a2))# Method Three:通过使用类实现class Demo3(object): # 静态变量 _instance = None _flag = False def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance def __init__(self): if not Demo3._flag: Demo3._flag = Trueb1 = Demo3()b2 = Demo3()print(id(b1))print(id(b2))# Method Four:通过__new__ 方法实现class Demo4: def __new__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance = super(Demo4, cls).__new__(cls) return cls._instancec1 = Demo4()c2 = Demo4()print(id(c1))print(id(c2))
运行结果:
以上就是关于"Python实现单例模式的方式有哪些"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
方式
内容
模式
实例
对象
模块
公众
字典
文章
方法
源码
知识
篇文章
utf-8
开发
测试
众所周知
价值
全局
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ibm服务器管理地址
山西软件开发中心
网络安全有什么领域
网络安全协会的名字
广东电商软件开发哪里有
完整sql数据库文件
如何进行数据库性能调优
软件开发一般多大学不会晚
高校网络安全防护
联通网络安全会议
软件开发技能鉴定
IDC数据库出租的增值税
造成重大网络安全事件
tcp服务器搭建
广东省数字政府网络安全指数指标体系
vpn服务器注册版
服务器免备案破解
西安邮政银行软件开发薪资待遇
软件开发什么季度最忙
用vb编写软件开发环境
数据库导表
网络安全有什么领域
防火墙网络安全设备
博雅高考数据库2021新疆
落实网络安全防范工作总结
vpn服务器注册版
恒拓开源网络技术
ftp服务器不能启动怎么办
线上购物系统对数据库的要求
北京豪客网络技术