# Implementacao de singleton atraves de alteracao do __new__
# para devolver o possivel objeto ja alocado.

class Singleton2(object):

    class _Singleton2(object):
        def __init__(self, val):
            self.val = val
        def __str__(self):
            return `self` + self.val
    _instance = None

    def __new__(cls, val):
        if not Singleton2._instance:
            Singleton2._instance = Singleton2._Singleton2(val)
        else:
            Singleton2._instance.val = val
        return Singleton2._instance
    


syntax highlighted by Code2HTML, v. 0.9.1