单例模式,就是在整个系统中,某个类只有一个实例存在,
实现方法为重写类的__new__方法,
判断是否整个类已经实例化过,如果实例化过就返回以前实例化过的对象
如果没有实例化过,就新建一个对象并且返回
class danli(object):
ob = None
def __init__(self,id,name='huihui',description='haha'):
self.id = id
self.name = name
self.description = description
@classmethod
def __new__(cls,*args,**kwargs):
if cls.ob is None:
cls.ob = object.__new__(cls)
return cls.ob
if __name__=='__main__':
ob1 = danli(1)
print(ob1.id)
print(ob1.name)
print(ob1.description)
print(id(ob1))
ob2 = danli(2,'zhujian',description='kaka')
print(ob2.id)
print(ob2.name)
print(ob2.description)
print(id(ob2))
"""
结果
1
huihui
haha
1588514266248
2
zhujian
kaka
1588514266248
"""