Python如何实现单例模式


Posted in 面试题 onJune 03, 2016
Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式:
1.
class Singleton(type):
def __init__(cls, name, bases, dict):
super(Singleton, cls).__init__(name, bases, dict)
cls.instance = None

def __call__(cls, *args, **kw):
if cls.instance is None:
cls.instance = super(Singleton, cls).__call__(*args, **kw)

return cls.instance

class MyClass(object):
__metaclass__ = Singleton

print MyClass()
print MyClass()
2. 使用decorator来实现单例模式
def singleton(cls):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return getinstance

@singleton
class MyClass:

Tags in this post...

面试题 相关文章推荐
六道php面试题附答案
Jun 05 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
Jul 30 面试题
用C或者C++语言实现SOCKET通信
Feb 24 面试题
动态密码技术
Oct 18 面试题
sealed修饰符是干什么的
Oct 23 面试题
什么是Linux虚拟文件系统VFS
Aug 25 面试题
介绍一下grep命令的使用
Jun 12 面试题
GWebs公司笔试题
May 04 面试题
软件测试企业面试试卷
Jul 13 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
Oct 07 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
Jul 06 面试题
SOA的常见陷阱或者误解是什么
Oct 05 面试题
什么是lambda函数
Sep 17 #面试题
介绍一下Python中webbrowser的用法
May 07 #面试题
请写出一段Python代码实现删除一个list里面的重复元素
Dec 29 #面试题
用Python写一个for循环的例子
Jul 19 #面试题
Prototype如何为一个Ajax添加一个参数
Dec 06 #面试题
Prototype如何更新局部页面
Mar 03 #面试题
如何开发安全的AJAX应用
Mar 26 #面试题
You might like
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
多广告投放代码 推荐
2006/11/13 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
js实现二级菜单渐隐显示
2015/11/03 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Python数据可视化图实现过程详解
2020/06/12 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
银行求职信范文
2014/05/26 职场文书
离婚协议书范本样本
2014/08/19 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
四风问题对照检查材料
2014/09/22 职场文书
异地恋情人节寄语
2015/02/28 职场文书
唐山大地震的观后感
2015/06/05 职场文书
大学生村官入党自传
2015/06/26 职场文书
积极心理学课程心得体会
2016/01/22 职场文书