Пример реализации Singleton python

Пример порождающего паттерна singletoon на python

Основная мысль:
1. Гарантирует, что у класса есть только один экземпляр!
2. Предоставляет глобальную точку доступа (в отличии от переменных, их можно переписывать)

По сути нужно перекрыть метод, который создает объект __new__

class Singleton(object):

    def __new__(cls):
        # Перекрываем создание объекта класса
        if not hasattr(cls, 'instance'):
            cls.instance = super(Singleton, cls).__new__(cls)
        return cls.instance


s = Singleton()
print id(s)
print s

b = Singleton()
print id(b)
print b

print (s is b)

# Вывод:
# 140425907838864
# <__main__.Singleton object at 0x7fb7745a9f90>
# 140425907838864
# <__main__.Singleton object at 0x7fb7745a9f90>
# True