第4篇---Python设计模式---单例模式 +含代码实现
时间:2019-02-16
本文章向大家介绍第4篇---Python设计模式---单例模式 +含代码实现,主要包括第4篇---Python设计模式---单例模式 +含代码实现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
单例模式概念
保证一个类仅有一个实例,并提供一个访问他的全局访问点。
案例一:
class Danli(object):
__instance = None
@classmethod
def __new__(cls, *args, **kwargs):
if cls.__instance == object.__new__(cls):
return cls.__instance
else:
return cls.__instance
obj1 = Danli()
print(id(obj1))
obj2 = Danli()
print(id(obj2))
结果输出:
解释:上述代码创建了一个类。。。类中有一个私有类变量instance, 另外有一个魔法方法, 这个方法判断当前这个类是否已经创建了对象, 如果没有,则调用超类object的__new__()方法创建对象, 若创建了,就将创建过的对象返回。。 确保了该类只能创建一个对象。。 。测试:我们实例化两个对象obj1和obj2, 输出它们的id,发现一样,说明这两个对象是同一个对象。。
__new__()方法: 每个类创建对象时,首先调用__new__()方法,然后在调用__init__()方法进行初始化。
因此可以这样描述__new__()和__init__()的区别, 在新式类中__new__()才是真正的实例化方法,为类提供了外壳制造出实力框架,然后调用该框架的构造方法__init__()使其丰满。 如果以建房子做比喻,__new__()类似构建房子的框架。 __init__()类似于装修。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Alink漫谈(二十一) :回归评估之源码分析
- Linux环境下通过GDB调试C项目实战
- Alink漫谈(二十二) :源码分析之聚类评估
- Python3.x将代码打包成exe程序并添加图标
- 在tinycolinux上编译pypy和hippyvm
- IDEA 热部署配置 HotSwapAgent-IntelliJ-IDEA-plugin
- 在tinycolinux上编译odoo8
- 在tinycolinux上编译jupyter和rootcling组建混合cpp,python学习环境
- 110分钟使用Python搭建自己的IP定位查询接口
- python实现在线微博数据可视化
- 在tinycolinux上安装chrome
- 如何在Ubuntu 18.04服务器上安装Python 3和设置编程环境
- python趣味题-数字加密
- 快手解析视频真实链接(爬取快手视频)
- 在tinycolinux上安装和使用cloudwall