【问答题任选2题作答】
请列出使用python实现singleton模式,方法越多越好。
#1.如果有实例则返回,没有则创建实例 class Singleton(object): def __new__(cls, *args, **kw): if not hasattr(cls, '_instance'): orig = super(Singleton, cls) cls._instance = orig.__new__(cls, *args, **kw) return cls._instance #2.将所有实例的__dirt__都指向同一个字典 class Borg(object): _state = {} def __new__(cls, *args, **kw): ob = super(Borg, cls).__new__(cls, *args, **kw) ob.__dict__ = cls._state return ob #3. 利用装饰器修饰类 def singleton(cls): instances = {} def getinstance(*args, **kw): if cls not in instances: instances[cls] = cls(*args, **kw) return instances[cls] return getinstance @singleton class xxxx: #4 import class My_Singleton(object): def foo(self): pass my_singleton = My_Singleton() from mysingleton import my_singleton my_singleton.foo()
#coding:utf8u'''实现单例模式author:renyidate:2018-09-19'''class Single(object):__instance=Nonedef__init__(self):passdef__new__(cls):if cls.__instance == None:cls.__instance = object.__new__(cls)return cls.__instanceelse:return cls.__instancea=Single()print id(a)b=Single()print id(b)