单例模式在面向对象的编程中也经常被问到,先看在python中怎么实现单例模式:

输出的id相同

这里被实例化出来的a和b都指向同一个对象,说明在内存中只存在一个实例化的对象,通过重写new方法,这样的单例模式实现起来简单,你记住了吗?

4 4 收藏


直接登录
最新评论
  • gnlm_admin 程序员 2015/11/22

    貌似还有一种实现单例的方式!

    • coco 学生 2015/11/23

      是啊,我知道的是有二种实现方式,一种是重写New方法,就是上面列出来的,还有一种是建实例时把所有实例的__dict__指向同一个字典,这样它们具有相同的属性和方法.

  • 李自泰 自由开发者 2015/12/23

    应该加入线程锁,否则多线程的时候,就会创建多个对象

  • weeds Linux软件工程师 2015/12/24

    class Singleton(object):
    def __new__(cls, *args, **kwargs):
    if not hasattr(cls, ‘_sgl’):
    cls._sgl = super(Singleton, cls).__new__(cls,*args)
    return cls._sgl

    a = Singleton()
    b = Singleton()

    print id(a)
    print id(b)