掌握了两种方法,现做个纪录:
一、
def singleton(cls):
instances = {}
def _singleton(*args, **kw):
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return _singleton
@singleton
class test():
pass
二、
class Singleton(object):
_instance = None
def __new__(cls, *args,**kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls,*args,**kwargs)
return cls._instance
if __name__ == '__main__':
s1=Singleton()
顺带记一下php的单例:
class Singleton(){
private static $_instance;
private function __construct()
{
$this->_db = pg_connect('xxxx');
}
private function __clone()
{
} //覆盖__clone()方法,禁止克隆
public static function getInstance()
{
if(! (self::$_instance instanceof self) )
{
self::$_instance = new self();
}
return self::$_instance;
}
}