单例类
Python中的有且只能有一个实例化对象的一种类。实现方法很多,这里列举两个:
实例1:__new__方法
class SingleClass(object):
def __new__(cls):
if not hasattr(cls, "instance"):
cls.instance = super(SingleClass, cls).__new__(cls)
return cls.instance
if __name__ == '__main__':
a = SingleClass()
b = SingleClass()
print(a)
print(b)
结果:
<__main__.SingleClass object at 0x000001C8749C3F28>
<__main__.SingleClass object at 0x000001C8749C3F28>Process finished with exit code 0
实例2:自定义属性判断
class SingleClass(object):
__instance = None # 自定义一个类属性做判断
def __new__(cls, *args, **kwargs):
if cls.__instance == None:
'''
如果__instance为空,证明是第一次创建实例
通过父类的__new__方法创建实例
'''
cls.__instance = object.__new__(cls)
return cls.__instance
else:
# 返回上一个对象的引用
return cls.__instance
a = SingleClass()
b = SingleClass()
print(a)
print(b)
结果:
<__main__.SingleClass object at 0x0000020E17B63F28>
<__main__.SingleClass object at 0x0000020E17B63F28>Process finished with exit code 0