作者:小白jiang
第一点:单例模式是什么?
答:单例模式,就是确保一个类中只有一个实例存在。像python的模块就是天然的单例模式,因为模块在第一次导入的时候,会生成.pyc文件,当第二次导入的时候,就会直接加载.pyc文件,而不会再执行模块代码。
单例模式也是一种设计模式。
第二点:重写new方法实现单例模式?
这里,就举个地球的例子,因为只有一个地球,不管实例化几次,都应该是相同的一个,所以写地球这个类的时候,需要用单例模式的设计思想。
class Earth(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, 'instance'):
cls.instance = super().__new__(cls)
return cls.instance
def __init__(self):
self. name = '地球'
# 第一次实例化
a = Earth()
print(id(a))
# 第二次实例化
b = Earth()
print(id(b))
结果
30943944
30943944
发现两次实例的对象的id一样,说明只存在一个实例。
个人网站:www.nihao070.cn