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实现电子词典
Apr 23 Python
解决uWSGI的编码问题详解
Mar 24 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
如何真正的了解python装饰器
Aug 14 Python
Python接口自动化测试的实现
Aug 28 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 读取shell管道传输过来的内容
2010/03/01 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python正则表达式常用函数总结
2017/06/24 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python函数基本使用原理详解
2020/03/19 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
给护士表扬信
2014/01/19 职场文书
2014年残联工作总结
2014/11/21 职场文书
出纳岗位职责范本
2015/03/31 职场文书
实施意见格式范本
2015/06/05 职场文书
《落花生》教学反思
2016/02/16 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技