首页 > 试题广场 >

【问答题任选2题作答】 请列出使用python实现

[问答题]
【问答题任选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()
    

发表于 2020-10-16 18:23:22 回复(0)
#coding:utf8
u'''
实现单例模式
author:renyi
date:2018-09-19
'''
class Single(object):
    __instance=None
    def__init__(self):
       pass
    def__new__(cls):
       if cls.__instance == None:
           cls.__instance = object.__new__(cls)
           return cls.__instance
else:
         return cls.__instance
a=Single()
print id(a)
 
b=Single()
print id(b)

发表于 2018-09-19 10:06:31 回复(0)