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>