单例模式
Posted 名刀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式相关的知识,希望对你有一定的参考价值。
单例模式是一种软件设计模式,大概有四种方法来实现。
# 第一种方式,使用模块, # mysingleton.py class My_Singleton(object): def foo(self): pass my_singleton = My_Singleton() # 第二种方式:使用__new__ class Singleton(object): _instance = None def __new__(cls,*args,**kwargs): if not cls._instance: cls._instance = super(Singleton,cls).__new__(cls,*args,**kwargs) return cls._instance class MyClass(Singleton): a = ‘adsgas‘ """ >>> one = MyClass() >>> two = MyClass() >>> one == two True >>> one is two True >>> id(one), id(two) (4303862608, 4303862608) """ # 第三种方法:使用装饰器 from functools import wraps def singleton(cls): instances = {} @wraps(cls) def getinstance(*args,**kwargs): if cls not in instances: instances[cls]= cls(*args,**kwargs) return instances[cls] @singleton class MyClass(object): a = ‘dasdas‘ # 使用metaclass,原类实现单例模式 class Singleton(type): _instances = {} def __call__(cls,*args,**kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton,cls).__call__(*args,**kwargs) return cls._instances[cls] class MyClass(metaclass=Singleton): pass
以上是关于单例模式的主要内容,如果未能解决你的问题,请参考以下文章