classSingleton(type):def__init__(cls,name,bases,dic):super(Singleton,cls).__init__(name,bases,dic)cls.instance=Nonedef__call__(cls,*args,**kwargs):ifcls.instanceisNone:print"creating a new instance"cls.instance=super(Singleton,cls).__call__(*args,**kwargs)else:
print"warning: only allowed to create one instance, instance already exists!"returncls.instanceclassMySingleton(object):__metaclass__=Singleton