单例模式是一种常用的模式,目的是确保类只有一个实例存在。使用场景多出现于访问文件。
基于__new__()魔法方法实现单例模式
class Man(object):
__instance = None
# 单例模式
def __new__(cls, *args, **kwargs):
print("调用__new__方法,为对象分配内存")
if Man.__instance is None:
Man.__instance = super().__new__(cls) # 返回内存地址的引用给__init__的self
return Man.__instance
def __init__(self, name, age):
print("调用__init__方法")
self.name = name
self.age = age
man = Man("张三", 18)
man2 = Man("李四", 18)
print(man is man2)