# 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