[Level 2] Singleton in Python.
#!/usr/bin/env python class Singleton(object): _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs) return cls._instance print me print you print me == you print id(me) == id(you) $ ./testSingleton.py True True $ You could also use metaclass to implement it. #!/usr/bin/env python class Singleton(type): def __init__(self, *args, **kwargs): super(Singleton, self).__init__(*args, **kwargs) self.__instance = None def __call__(self, *args, **kwargs): if self.__instance is None: self.__instance = super(Singleton, self).__call__(*args, **kwargs) return self.__instance class s(object): __metaclass__ = Singleton def __init__(self, size): self.__size = size def getSize(self): return self.__size class n(object): def __init__(self, size): self.__size = size def ...