Python-单例类


Singleton 类是只能创建一个对象的类。当您执行一些繁重的操作(例如创建数据库连接)时,这有助于优化内存使用。

例子

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__() 方法。当您创建类的对象时,我们重写 Python 在内部调用的 __new__() 方法。它检查我们的实例变量是否为 None。如果实例变量为None,则创建一个新对象并调用super()方法并返回包含该类对象的实例变量。

如果创建了多个对象,则很明显该对象仅在第一次创建;之后,返回相同的对象实例。

Creating the object
<__main__.SingletonClass object at 0x000002A5293A6B50>
<__main__.SingletonClass object at 0x000002A5293A6B50>