Python Design Patterns - Singleton

Este padrão restringe a instanciação de uma classe a um objeto. É um tipo de padrão de criação e envolve apenas uma classe para criar métodos e objetos especificados.

Ele fornece um ponto global de acesso à instância criada.

Como implementar uma classe singleton?

O programa a seguir demonstra a implementação da classe singleton onde ela imprime as instâncias criadas várias vezes.

class Singleton:
   __instance = None
   @staticmethod 
   def getInstance():
      """ Static access method. """
      if Singleton.__instance == None:
         Singleton()
      return Singleton.__instance
   def __init__(self):
      """ Virtually private constructor. """
      if Singleton.__instance != None:
         raise Exception("This class is a singleton!")
      else:
         Singleton.__instance = self
s = Singleton()
print s

s = Singleton.getInstance()
print s

s = Singleton.getInstance()
print s

Resultado

O programa acima gera a seguinte saída -

O número de instâncias criadas é o mesmo e não há diferença nos objetos listados na saída.