# Outra forma de se implementar singleton, mostrando que a classe
# interna e na verdade desnecessaria e permitindo o uso de heranca.

# Obs: o dicionario e a chave para permitir heranca. Pense sobre isso.

class Singleton3(object):
    _singletons = {}
    def __new__(cls, *args, **kwds):
        if not cls._singletons.has_key(cls):
            cls._singletons[cls] = object.__new__(cls)
        return cls._singletons[cls]


syntax highlighted by Code2HTML, v. 0.9.1