python单例模式实例解析


Posted in Python onAugust 28, 2018

本文实例为大家分享了python单例模式的具体代码,供大家参考,具体内容如下

多次实例化的结果指向同一个实例

单例模式实现方式

方式一:

import settings

class MySQL:
  __instance = None

  def __init__(self, ip, port):
    self.ip = ip
    self.port = port

  @classmethod
  def from_conf(cls):
    if cls.__instance is None:
      cls.__instance = cls(settings.IP,settings.PORT)
    return cls.__instance

obj1 = MySQL.from_conf()
obj2 = MySQL.from_conf()
obj3 = MySQL.from_conf()
print(obj1)
print(obj2)
print(obj3)

方式二:

import settings

def singleton(cls):
  _instance = cls(settings.IP, settings.PORT)

  def wrapper(*args, **kwargs):
    if args or kwargs:
      obj = cls(*args, **kwargs)
      return obj
    return _instance

  return wrapper

@singleton
class MySQL:
  def __init__(self, ip, port):
    self.ip = ip
    self.port = port

obj1 = MySQL()
obj2 = MySQL()
obj3 = MySQL()
print(obj1)
print(obj2)
print(obj3)

方式三:

import settings

class Mymeta(type):
  def __init__(self, class_name, class_bases, class_dic):
    self.__instance = self(settings.IP, settings.PORT)

  def __call__(self, *args, **kwargs):
    if args or kwargs:
      obj = self.__new__(self)
      self.__init__(obj, *args, **kwargs)
      return obj
    else:
      return self.__instance

class MySQL(metaclass=Mymeta):
  def __init__(self, ip, port):
    self.ip = ip
    self.port = port

obj1 = MySQL()
obj2 = MySQL()
obj3 = MySQL()
print(obj1)
print(obj2)
print(obj3)

方式四:

def f1():
  from singleton import instance
  print(instance)

def f2():
  from singleton import instance,MySQL
  print(instance)
  obj = MySQL('1.1.1.1', '3389')
  print(obj)

f1()
f2()


singleton.py文件里内容:
import settings

class MySQL:
  print('run...')

  def __init__(self, ip, port):
    self.ip = ip
    self.port = port

instance = MySQL(settings.IP, settings.PORT)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python中操作MySQL入门实例
Feb 08 Python
python获取android设备的GPS信息脚本分享
Mar 06 Python
图文详解WinPE下安装Python
May 17 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
python正则表达式re.search()的基本使用教程
May 21 Python
4种方法python批量修改替换列表中元素
Apr 07 Python
Python3.7实现中控考勤机自动连接
Aug 28 #Python
python实现遍历文件夹修改文件后缀
Aug 28 #Python
Python绘制正余弦函数图像的方法
Aug 28 #Python
Python logging模块用法示例
Aug 28 #Python
Python异常处理操作实例详解
Aug 28 #Python
Python封装原理与实现方法详解
Aug 28 #Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 #Python
You might like
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
搭建vue开发环境
2018/07/19 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
python如何通过protobuf实现rpc
2016/03/06 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python判断设备是否联网的方法
2018/06/29 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python中判断文件结束符的具体方法
2020/08/04 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
网页美工求职信
2014/02/15 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书