`
edison0951
  • 浏览: 70584 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python单例模式

阅读更多

网上曾经看到过PYTHON的面试题中有一个是PYTHON的单例模式,说实话,用了这么久的PYTHON,第一次听说单例模式,GOOGLE一下单例模式的关键词,出来的几页面全是JAVA的,想想自己早年也看过一些JAVA的书,先不谈语法,JAVA的很多设计完全就是要把开发者搞晕。UNIX的KISS原则不是很好么,非要把自己搞的很高深,现在的C++的复杂度不就是未来JAVA想要弄的么,一个开发者不学习个半年到1年,JAVA的很多东西根本就无法上手,我们所倡导的敏捷和开发效率,根本就无从谈起了。扯了这么多,还是看看SATCKOVERFLOW上单例模式吧

class Singleton(object):
    _instance = None
    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(
                                cls, *args, **kwargs)
        return cls._instance


if __name__ == '__main__':
    s1=Singleton()
    s2=Singleton()
    if(id(s1)==id(s2)):
        print "Same"
    else:
        print "Different"

 这不就是一个类只有一个实例么,还取名叫什么单例模式(就是要把开发人员搞晕),看来还是函数编程来的实在。

分享到:
评论
15 楼 tonyseek 2011-04-18  
sydra 写道
不是很懂python,鄙人是做java的,很奇怪这个单例类,不会有并发性问题么?
如果有多个线程同时访问,有可能会产生多个实例的啊~


不会的,Python 有 GIL 作为全局锁,保证线程安全。除非访问了 IO 或者调用了 sleep ,Python 会释放锁而导致线程不安全,其他情况下都是可靠的。
14 楼 edison0951 2011-02-13  
Kabie 写道
Singleton模式一般是用metaclass实现的……这个做的不够漂亮。。。

还妄赐教,不知道如何写哟
13 楼 许怀远 2011-02-04  
mikewang 写道
sydra 写道
不是很懂python,鄙人是做java的,很奇怪这个单例类,不会有并发性问题么?
如果有多个线程同时访问,有可能会产生多个实例的啊~


不会的, GIL 保证在一个时刻,只有一个线程在运行


没用的
if not AAA:
    BBB

假设两个线程T1和T2,
T1执行完if准备执行BBB的时候,正好被切出,
此时T2进入,执行if判断,仍然是True,于是T2执行BBB,
之后T2挂起,T1被切入,继续执行BBB
12 楼 Kabie 2011-01-25  
Singleton模式一般是用metaclass实现的……这个做的不够漂亮。。。
11 楼 greatghoul 2011-01-25  
感觉像两妇女骂架,还挺带感的。喜欢python的,看了楼主鄙视java的言论,笑一下就可以了,喜欢java的,没有必要逛到这里找气受吧。这种东西,本就没有什么公论,还争吵个不休,都快过年了。。。
10 楼 mikewang 2011-01-24  
sydra 写道
不是很懂python,鄙人是做java的,很奇怪这个单例类,不会有并发性问题么?
如果有多个线程同时访问,有可能会产生多个实例的啊~


不会的, GIL 保证在一个时刻,只有一个线程在运行
9 楼 edison0951 2011-01-22  
gaotianpu 写道
设计模式是给那些强类型、静态语言设计的,像python这样的语言,很多情况下不用设计模式更好些!

here is the offical document:
http://www.python.org/workshops/1997-10/proceedings/savikko.html

我也同意,PYTHON,HASKELL,LISP之流更适合函数编程
8 楼 gaotianpu 2011-01-21  
设计模式是给那些强类型、静态语言设计的,像python这样的语言,很多情况下不用设计模式更好些!

here is the offical document:
http://www.python.org/workshops/1997-10/proceedings/savikko.html
7 楼 sydra 2011-01-21  
不是很懂python,鄙人是做java的,很奇怪这个单例类,不会有并发性问题么?
如果有多个线程同时访问,有可能会产生多个实例的啊~
6 楼 robertpi 2011-01-20  
gof那个当然不是万能的,例如在java中在有容器情况下单例和工厂根本不需要,搜下论坛里面老帖子就知道了。
5 楼 edison0951 2011-01-19  
liuia 写道
对于自己不懂的东西最好表现的虚心一点
设计模式请参照四人帮的书
Design Patterns: Elements of Reusalbe Object-Oriented Software

还有一点就是我很喜欢函数编程,不是太喜欢面向对象那一套吧,JAVA的那些东西实在是不敢苟同。
4 楼 edison0951 2011-01-19  
marlonyao 写道
你的方法很好,但也有一个很大的问题,它会继承完全失效。


我没有考虑到继承的因素呀
3 楼 edison0951 2011-01-19  
liuia 写道
对于自己不懂的东西最好表现的虚心一点
设计模式请参照四人帮的书
Design Patterns: Elements of Reusalbe Object-Oriented Software

那本书我大概扫描了一眼,也看过一些设计模式的书。首先我觉得学习JAVA过后或者有写过JAVA代码的人动不动就给我把设计模式抬出来,这让我很无语。这个不是懂不懂的关系,要按照四人帮那个书,DJANGO的MVC模式还是来自于SMALLTALK,那个书第个设计模式就是这个。
2 楼 marlonyao 2011-01-19  
你的方法很好,但也有一个很大的问题,它会继承完全失效。

1 楼 liuia 2011-01-19  
对于自己不懂的东西最好表现的虚心一点
设计模式请参照四人帮的书
Design Patterns: Elements of Reusalbe Object-Oriented Software

相关推荐

    Python单例模式实例详解

    本文实例讲述了Python单例模式。分享给大家供大家参考,具体如下: 单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点。 实现某个类只有一个实例的途径: 1,让一个全局变量使得一个对象被访问,但是...

    Python单例模式实例分析

    本文实例讲述了Python单例模式的使用方法。分享给大家供大家参考。具体如下: 方法一 复制代码 代码如下:import threading    class Singleton(object):   __instance = None     __lock = threading.Lock()...

    python单例模式原理与创建方法实例分析

    本文实例讲述了python单例模式原理与创建方法。分享给大家供大家参考,具体如下: 1. 单例是什么 举个常见的单例模式例子,我们日常使用的电脑上都有一个回收站,在整个操作系统中,回收站只能有一个实例,整个系统...

    使用python写的单例模式日志记录器(设计模式之单例模式)

    使用python写的使用但里模式创建的一个日志记录器,具体相关知识可以参阅我的博客。

    Python单例模式的四种创建方式实例解析

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器...

    python单例模式实例分析

    本文实例讲述了python单例模式。分享给大家供大家参考。具体分析如下: __new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,...

    python单例模式实例解析

    本文实例为大家分享了python单例模式的具体代码,供大家参考,具体内容如下 多次实例化的结果指向同一个实例 单例模式实现方式 方式一: import settings class MySQL: __instance = None def __init__(self, ip, ...

    Python单例模式的两种实现方法

    主要介绍了Python单例模式的相关资料,这里提供了两种实现方法,及注意事项,需要的朋友可以参考下

    python单例模式的多种实现方法

    主要介绍了python单例模式的多种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    详解python单例模式与metaclass

    主要介绍了python单例模式与metaclass,文章介绍了单例模式的实现方式

    5种Python单例模式的实现方式

    主要为大家介绍了5种Python单例模式的实现方式,所谓单例,是指一个类的实例从始至终只能被创建一次,对单例感兴趣的小伙伴们可以参考一下

    在Python中实现单例模式.docx

    在Python中实现单例模式.docx

    简单了解python单例模式的几种写法

    主要介绍了简单了解python单例模式的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python单例设计模式实现解析

    主要介绍了python单例设计模式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python单例模式.zip_图形图像处理_Python_

    Python单例模式,用于Python GUI编程重要模式

Global site tag (gtag.js) - Google Analytics