Python で Singleton/シングルトン パターン
2006.12.12
PythonでSingletonパターンを実現する方法.
class Singleton(type):
def __init__(self, *args):
type.__init__(self, *args)
self._instance = None
def __call__(self, *args):
if self._instance is None :
self._instance = type.__call__(self, *args)
return self._instance
ここで見つけました.http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/412551
Python Cookbook のサイトを探すと幾つか見つかりますが,このコードが一番気に入ったのでこれを利用しています.
RDBへのコネクションを管理するクラス等で以下のように使っています.
import singleton
import psycopg2.psycopg1 as dbapi2
import psycopg2.extras
DictCursor = psycopg2.extras.DictCursor
class DBConnectionManager :
__metaclass__ = singleton.Singleton
def __init__(self, dsn) :
self.dsn = dsn
self.con = None
self.closed = True
def getcon(self) :
if self.closed :
self.con = dbapi2.connect(self.dsn)
self.closed = False
return self.con
def close(self) :
if not self.closed :
self.con.close()
self.closed = True
カテゴリー:技術情報メモ
