# 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