Lazy instantiation in the Singleton pattern
One of the use cases for the Singleton pattern is lazy instantiation. For example, in the case of module imports, we may accidently create an object even when it's not needed. Lazy instantiation makes sure that the object gets created when it's actually needed. Consider lazy instantiation as the way to work with reduced resources and create them only when needed.
In the following code example, when we say s=Singleton()
, it calls the __init__
method but no new object gets created. However, actual object creation happens when we call Singleton.getInstance()
. This is how lazy instantiation is achieved.
class Singleton: __instance = None def __init__(self): if not Singleton.__instance: print(" __init__ method called..") else: print("Instance already created:", self.getInstance()) @classmethod def getInstance(cls): if not cls.__instance: cls.__instance = Singleton() return...