#单例模式
#装饰器版本
def singleton(cls):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return getinstance

@singleton
class Myclass:
    pass
ins1 = Myclass()
ins2 = Myclass()
print(id(ins1),id(ins2))#43877264 43877264

#import方法  --> 天然的单例模式
#mysingleton.py  一个py文件
class My_Singleton(object):
    def foo(self):
        pass

my_singleton = My_Singleton()

#to use from mysingleton
# import my_singleton  在另外一个文件中导入类的实例对象
my_singleton.foo()

#使用__new__方法
class Singleton(object):
    def __new__(cls):
        if not hasattr(cls,'_instance'):
            orig = super(Singleton,cls)
            cls._instance = orig.__new__(cls)
        return cls._instance

# class MyClass(singleton):
#     a = 1
ins3 = Singleton()
ins4 = Singleton()
print(id(ins3),id(ins4))#43877656 43877656

 

相关文章:

  • 2021-08-11
  • 2022-12-23
  • 2021-12-23
  • 2021-12-12
  • 2021-04-06
  • 2021-10-30
  • 2021-12-26
  • 2021-06-15
猜你喜欢
  • 2021-12-23
  • 2022-12-23
  • 2022-01-25
  • 2021-07-26
相关资源
相似解决方案