使用__new__()实现:
class SingleTon:
'''__new__()实现'''
instance = None
def __new__(cls, *args, **kwargs):
if cls.instance is None:
cls.instance = super().__new__(cls)
return cls.instance
if __name__ == '__main__':
s1 = SingleTon()
s2 = SingleTon()
print(s1)
print(s2)
其中对instance 数据类型选择可以使用字典:
class SingleTon(object):
_instance = {}
def __new__(cls, *args, **kwargs):
if cls not in cls._instance:
cls._instance[cls] = super().__new__(cls, *args, **kwargs)
return cls._instance[cls]
使用装饰器实现:
def single_ton(cls):
instance = []
def single(*args, **kwargs):
if len(instance)==0:
instance.append(cls(*args, **kwargs))
r