__new__()是Python中的一个魔术方法(构造方法)。它会在创建类的时候,先于__init__()执行。__new__()会在内存中开辟地址,然后传给__init__()。
__new__()作用 单例模式什么是单例模式?
单例模式(Singleton Pattern)是一种简单的设计模式。其主要解决的问题是一个全局使用的类被重复地创建,从而占用大量内存。
当一个类需要提供比较通用的功能,且代码里有很多地方需要使用到它,则可以使用单例模式来避免创建多个重复的实例,节约系统资源。
其实现的逻辑是:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
示例
class Singleton():
__instance = None
def __new__(cls):
if cls.__instance is None:
cls.__instance = super().__new__(cls)
return cls.__instance
else:
return cls.__instance
object1 = Singleton()
object2 = Singleton()
object1.name = 'oneSingleton-liqi'
print(object1.name, object2.name)
print(object1 is object2)
---------------
输出:
oneSingleton-liqi oneSingleton-liqi
True



