====== Python: Singleton ====== # class Singleton(type): # _instances = {} # def __call__(cls, *args, **kwargs): # if cls not in cls._instances: # cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) # return cls._instances[cls] class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): cls._instances.setdefault(cls, super().__call__(*args, **kwargs)) return cls._instances[cls] # Python2 class MyClass(BaseClass): __metaclass__ = Singleton pass # Python3 class MyClass(BaseClass, metaclass=Singleton): pass # Test for x in range(5): MyClass().x = x print(MyClass().x) * https://medium.com/techtofreedom/3-levels-of-understanding-the-singleton-pattern-in-python-4bf429a10438 * http://stackoverflow.com/questions/6760685/creating-a-singleton-in-python