# 单例模式:

# 实现目的:实例化多次,得到的实例是同一个,就是同一个对象,同一个名称空间(更加节省空间)

####################################方式一:在类内部定义一个类方法#################################

import settings

class Mysql:

__instance=None #定义一个变量,来接收实例化对象,方便下面做判断

def __init__(self,ip,port):

self.ip=ip

self.port=port

#

@classmethod #做成类方法 #绑定给Mysql类去直接调用实例化

def from_conf(cls):

#目的是要调取mysql这个类通过从配置文件读取IP、端口参数,完成调用init方法,拿到一个实例化init方法的对象

# mysql(settings.IP,settings.PORT)

#如果是这样每次,实例化出的对象,都是不同的名称空间,但是数据是同一份

# return cls(settings.IP,settings.PORT) #cls(ip,port) 就是调用init方法

#演变最终版:思考可以统一定义一个初始变量__instance=None,将第一次实例的对象传给他,有每次外面再访问就直接

if cls.__instance is None:

cls.__instance=cls(settings.IP,settings.PORT)

return cls.__instance

#之前版本:

# p1=Mysql.from_conf()

# print(p1) #<__main__.mysql object at> #数据是同一份,但每次实例化,指向的都是不同的内存地址

# p2=Mysql.from_conf()

# print(p2) #<__main__.mysql object at>

#这样写就完美的实现了隔离:

#升级版本后,可以实现,访问存的东西一样的,可以指向同一个内存空间

obj=Mysql.from_conf()

print(obj.__dict__)

#也可以传入新的参数,另外新造一个名称空间

obj2=Mysql('3.3.3.3',8888)

print(obj2.__dict__)

python 空对象模式_Python 单例模式(3种方式)相关推荐

  1. python实现进程通信_Python通过4种方式实现进程数据通信

    Python通过4种方式实现进程数据通信 发布时间:2020-10-10 20:46:27 来源:脚本之家 阅读:94 作者:我太难了008 python提供了4种方式来满足进程间的数据通信 1. 使 ...

  2. python 类对象转换json的三种方式

    第一种 from datetime import datetime import json from typing import Anyclass Student:def __init__(self, ...

  3. Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式

    前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...

  4. Java进阶篇设计模式之十三——观察者模式和空对象模式

    简介 观察者模式又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. ...

  5. java观察者模式异步notify_Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式...

    前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...

  6. 设计模式之空对象模式

    空对象模式 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法. 举个简单的例子, 一个听动物叫声的模拟程序: 动 ...

  7. php7 空对象,PHP设计模式之空对象模式(Null Object)代码实例大全(26)

    目的 空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式.它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件 返回一个对象或 nu ...

  8. 设计模式のNullObjectPattern(空对象模式)----行为模式

    一.产生背景 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查.Null 对象不是检查空值,而是反应一个不做任何动作的关系.这样的 Null 对象也可 ...

  9. 设计模式笔记二十二:空对象模式

    原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 在空对象模式(Null Object Pattern)中,一个空对象取代 ...

最新文章

  1. 电脑右键没有新建按钮解决办法
  2. Smali语法简单介绍
  3. eclipse总跳出password required的框解决办法
  4. RTP协议全解析(H264码流和PS流)(转)
  5. Stupid cat Doge (分形图)
  6. 快速排序以及荷兰国旗问题
  7. 招聘数据爬取、数据处理与可视化(v2--解析JS渲染页面)
  8. mysql配置ip和端口_连接(Connectivity)选项中,“TCP/IP”复选项选中表示启用TCP/IP网络协议,配置连接MySQL服务器的默认端口号为“3306”。_学小易找答案...
  9. MIMO信道容量仿真MATLAB,MIMO系统的信道容量分析 及Matlab仿真
  10. 随机生成数字字母组成的组合
  11. AM4379 EDMA相关总结
  12. 【PS】平面设计:如何旋转图片
  13. npm 安装 bin/npm: line 1: ../lib/node_modules/npm/bin/npm-cli.js: No such file or directory
  14. 第一单元 用python学习微积分(五) 隐函数微分法和逆函数导数(上)- 隐函数微分
  15. pkuseg对文件分词时报错
  16. java求质因数算法
  17. 【电力电子技术】电力电子器件:概述
  18. 无尽长廊(Gallery)
  19. 创龙TI TMS320C6678 DSP + Xilinx Kintex-7 FPGA的温度传感器、B2B连接器
  20. 【时间】Unix时间戳

热门文章

  1. 人本质要好,要善良,要真诚,有格局和胸怀,有能力,有眼光,能讲故事,能找到人,能搞到钱...
  2. C++ primer学习方法
  3. Python两个内置函数——locals 和globals
  4. redmine 2.2.x 修改文档附件的存放目录
  5. PowerShell收发TCP消息包
  6. ANDROID BITMAP内存限制OOM,OUT OF MEMORY
  7. Microsoft 的 OpenSource Licence
  8. 算法每日练习之判断完数
  9. Activiti7工作流基础
  10. 数据结构5: 链表(单链表)的基本操作及C语言实现