python+單例模式
阿新 • • 發佈:2018-11-20
單例模式: 顧名思義,一個類,在整個專案的執行週期內只有一個例項
def singleton(cls,*args,**kwargs):
instance = {}
def _singleton():
if cls not in instance:
instance[cls] = cls(*args,**kwargs)
return instance[cls]
return _singleton
@singleton
class test_singleton(object):
def __init__(self):
self.sum = 0
def add(self):
self.num = 100
cls1 = test_singleton()
cls2 = test_singleton()
print(id(cls1)==id(cls2))
利用__new__實現單例子
class A(object):
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls,*args,**kwargs)
return cls.__instance
def __init__(self):
self.value = 3
a = A()
a.value = 2
print(a.value)
b = A()
print(a is b)
print(a.value)
print(b.value)