看完python教程后,单例模式在实际的开发中很常见,即每个类有且仅可以生成一个实例对象。例如:电脑的回收站,在系统中只能打开一个回收站,也就是说这个整个系统中只有一个实例,再次调用类进行对象实例化时,生成的依旧是同一个对象,拥有相同的内存地址,相同属性。简单的说就是不管创建多少次对象,类返回的对象都是最初创建的,不会再新建其他对象。
下面用python代码进行演示:
class SCase(object):
instance = None # 保存实例对象
def __init__(self,name,age):
print(name,age)
def __new__(cls, *args, **kwargs):
# 如果类属性 __instance 的值为None,那么新建一个对象
# 如果类属性值不为None 返回 __instance 保存的对象
if not cls.instance:
cls.instance = super(SingleCase,cls).__new__(cls) # 调用父类__new__方法生成一个实例对象
return cls.instance
else:
return cls.instance
obj1 = SCase('xiaoming',18)
obj2 = SCase('xiaoming',118)
print(id(obj1)) # id相等,说明实例化两次对象,实际上都是同一个对象
print(id(obj2))
以下为运行结果,两者对象的id相同,所以为同一对象。
ps(子类继承父类之后创建的依旧为父类的那一个对象)