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+Wordpress制作小说站
Apr 14 Python
详解Python中的正则表达式
Jul 08 Python
Python如何发布程序的详细教程
Oct 09 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
如何运行带参数的python脚本
Nov 15 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 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
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
python正则分析nginx的访问日志
2017/01/17 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
详解python多线程之间的同步(一)
2019/04/03 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
岗位职责风险点
2014/03/12 职场文书
应聘教师自荐书
2014/06/16 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
庆元旦主持词
2015/07/06 职场文书
P站美图推荐——变身女主角特辑
2022/03/20 日漫