Python 单例类
单例类是只能创建一个对象的类。当您执行一些重型操作时,例如创建数据库连接时,这有助于优化内存使用。
示例
class SingletonClass:
_instance = None
def __new__(cls):
if cls._instance is None:
print('Creating the object')
cls._instance = super(SingletonClass, cls).__new__(cls)
return cls._instance
obj1 = SingletonClass()
print(obj1)
obj2 = SingletonClass()
print(obj2)
以下是上述代码的工作原理 –
当声明一个 Python 类的实例时,它在内部调用__new__()
方法。我们重写了__new__()
方法,当创建一个类的对象时,Python 内部会调用该方法。它会检查我们的实例变量是否为 None。如果实例变量为 None,则创建一个新对象,并调用 super() 方法并返回包含此类对象的实例变量。
如果创建了多个对象,可以明确地看出对象只在第一次创建后被返回,之后返回相同的对象实例。
Creating the object
<__main__.SingletonClass object at 0x000002A5293A6B50>
<__main__.SingletonClass object at 0x000002A5293A6B50>