# 使用Python实现单例模式
# 方法一: 使用__new__方法
class SingleTon(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
cls._instance = object.__new__(cls, *args, **kwargs)
return cls._instance
class TestClass(SingleTon):
a = 1
# 方法二: 使用装饰器(decorator)
def SingleTon1(cls, *args, **kwargs):
instances = {}
def _singleTon():
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return _singleTon
@SingleTon1
class TestClass1(object):
a = 1
# 共享属性 属性是共享的,但是并非单例模式
class SingleTon3(object):
_state = {}
def __new__(cls, *args, **kwargs):
obj = object.__new__(cls, *args, **kwargs)
obj.__dict__ = cls._state
return obj
class TestClass3(SingleTon3):
a = 1
test1 = TestClass3()
test2 = TestClass3()
test1.a = 2
print(test1.a)
print(test2.a)
print(test1)
print(test2)
Python 实现单例模式
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://www.heiqu.com/109e6e00b21a8ef55151d5f888f49427.html