当前位置:
凯发ag旗舰厅登录网址下载 >
编程语言
> python
>内容正文
python
python单例模式数据库连接池-凯发ag旗舰厅登录网址下载
凯发ag旗舰厅登录网址下载
收集整理的这篇文章主要介绍了
python单例模式数据库连接池_python实现单例模式的四种方式
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
# 单例模式实现方式一:类方法import settingsclass mysql:__instance=nonedef __init__(self, ip, port):self.ip = ipself.port = port@classmethoddef from_conf(cls):if cls.__instance is none:cls.__instance=cls(settings.ip, settings.port)return cls.__instanceobj1=mysql.from_conf()obj2=mysql.from_conf()obj3=mysql.from_conf()# obj4=mysql('1.1.1.3',3302)print(obj1)print(obj2)print(obj3)# print(obj4)# 单例模式实现方式二:装饰器import settingsdef singleton(cls):_instance=cls(settings.ip,settings.port)def wrapper(*args,**kwargs):if len(args) !=0 or len(kwargs) !=0:obj=cls(*args,**kwargs)return objreturn _instancereturn wrapper@singleton #mysql=singleton(mysql) #mysql=wrapperclass mysql:def __init__(self, ip, port):self.ip = ipself.port = portobj1=mysql() obj2=mysql() obj3=mysql() obj4=mysql('1.1.1.3',3302) print(obj1)print(obj2)print(obj3)print(obj4)# 单例模式实现方式三:通过元类:import settingsclass mymeta(type):def __init__(self,class_name,class_bases,class_dic):#self=mysql这个类self.__instance=self(settings.ip,settings.port)def __call__(self, *args, **kwargs):# self=mysql这个类if len(args) != 0 or len(kwargs) != 0:obj=self.__new__(self)self.__init__(obj,*args, **kwargs)return objelse:return self.__instanceclass mysql(metaclass=mymeta): #mysql=mymeta(...)def __init__(self, ip, port):self.ip = ipself.port = portobj1=mysql()obj2=mysql()obj3=mysql()obj4=mysql('1.1.1.3',3302)print(obj1)print(obj2)print(obj3)print(obj4)# 单例模式实现方式四:模块导入:def f1():from singleton import instanceprint(instance)def f2():from singleton import instance,mysqlprint(instance)obj=mysql('1.1.1.3',3302)print(obj)f1()f2()
同步发布在小猿取经博客
小猿取经 - 博客园www.cnblogs.com总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的python单例模式数据库连接池_python实现单例模式的四种方式的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: ora-24811提供写入的数据少于指定