为了账号安全,请及时绑定邮箱和手机立即绑定

python实现单例模式怎么写啊?

python实现单例模式怎么写啊?

开满天机 2018-04-04 17:30:40
python实现单例模式是什么?我面试的时候有个面试官让我手写2个单例设计模式,我是个菜鸟不会写,结果挂了。现在就想知道单例设计模式到底是怎么一回事要怎么写啊?
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

这个网上有很多的,你可以搜一搜,单例设计模式很多面试官都会考的,最好是记住一两个,我下面写一个例子给你看一下

使用__new__方法

在__new__方法中把类实例绑定到类变量_instance上,如果cls._instance为None表示该类还没有实例化过,实例化该类并返回。如果cls_instance不为None表示该类已实例化,直接返回cls_instance

class SingleTon(object):

    def __new__(cls,*args,**kwargs):

        if not hasattr(cls,'_instance'):

            cls._instance = object.__new__(cls,*args,**kwargs)

        return cls._instance

class TestClass(SingleTon):

    a = 1

test1 = TestClass()

test2 = TestClass()

print test1.a,test2.a


test1.a=2

print test1.a,test2.a


print id(test1),id(test2)


查看完整回答
反对 回复 2018-07-12
?
绝地无双

TA贡献1946条经验 获得超4个赞

使用装饰器,建立过实例的就放到instances里面,下次建立的时候先检查里面有没有

def SingleTon(cls,*args,**kwargs):

    instances = {}

    print instances

    def _singleton():

        if cls not in instances:

            instances[cls] = cls(*args,**kwargs)

        print instances

        return instances[cls]

    return _singleton


@SingleTon

class LastClass(object):

    a = 1

test1 = LastClass()

print test1.a

test2 = LastClass()

print test2.a


查看完整回答
反对 回复 2018-07-12
  • 2 回答
  • 0 关注
  • 468 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信