Python实现单例模式的方式有哪些
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇"Python实现单例模式的方式有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这
千家信息网最后更新 2024年12月12日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安全错误
数据库的锁怎样保障安全
中国网络安全企业100强报告
随机从数据库取出几条数据
软件开发转销售求职信怎么写
数据库第六章讨论题
辽宁软件开发视频下载
服务器安全pdf
软件开发交流群
泸州有为互联网科技有限公司
家具数据库
工商银行软件开发中心成都
计算机网络技术掌握技能
网络安全管理员笔试
来安县软件开发技术项目实训中心
绝地求生谷歌账号如何切换服务器
学软件开发总结
汕头数字软件开发价格
午夜美剧软件开发
上海共享充电线软件开发公司
数据库中包含若干
传奇开服需要几个服务器
体验服哪个服务器最好
rest服务器端
广播服务器登录键不见了
连接数据库的变量
软件开发声明测试
英语科代表计算机网络技术
广州睿思网络技术
怎么提升服务器的速度
软件开发需求文案
linux 免安装数据库