# Implementacao de singleton baseada em classe interna e
# delegacao atraves de alteracao em __getattr__

class Singleton1:

    class _Singleton1:
        def __init__(self, arg):
            self.val = arg
        def __str__(self):
            return `self` + self.val
    _instance = None
    
    def __init__(self, arg):
        if not Singleton1._instance:
            Singleton1._instance = Singleton1._Singleton1(arg)
        else:
            Singleton1._instance.val = arg

    def __getattr__(self, name):
        return getattr(Singleton1._instance, name)

    


syntax highlighted by Code2HTML, v. 0.9.1