def Singleton(cls): instance = [] def create(*args, **kw): if not instance: instance.append(cls(*args, **kw)) return instance[0] return create # Test: TheList = Singleton(list) def test2(): mylist1 = TheList([1,2,3]) mylist2 = TheList() print mylist1, mylist2 mylist1.append(4) del mylist1[1] print mylist1, mylist2 >>> test2() [1, 2, 3] [1, 2, 3] [1, 3, 4] [1, 3, 4]