PythonでSingleton

PythonでSingletonの実装の復習。

SingletonパターンはよくDB関連の箇所で使われていると思います。

なのでPythonではお手軽なSQLiteで実装してみました。


#!/usr/bin/env python
# -*- coding:utf-8 -*-

import sys, sqlite3

class Singleton:
instance = None
def __init__(self, *args):
self.instance = None

def __call__(self, *args):
if self.instance is None:
self.instance = sqlite3.connect(":memory:");
return self.instance


class singletonExample:
instance = None
def getInstance(self, *args):
if self.instance is None:
self.instance = Singleton()()
return self.instance


if __name__ == "__main__":
try:
print(singletonExample().getInstance())
print(singletonExample().getInstance())
print(singletonExample().getInstance())
print(singletonExample().getInstance())
print(dir(singletonExample().getInstance()))
except Exception, e:
print(e)

exit(0)

printで出力されたアドレスが同じことが確認できます