Pythonでシングルトンを実装

Pythonでシングルトンメソッドを実装するのに苦労したのでここにメモしておく。

class Singleton:
    _instance = None
    class Inner:pass

    def __init__(self):
        if Singleton._instance is None:
            Singleton._instance = Singleton.Inner()

    def __getattr__(self,attr):
        return getattr(self._instance,attr)
    def __setattr__(self,attr,val):
        return setattr(self._instance,attr,val)


s1 = Singleton()
s1.foo = "hello"
s2 = Singleton()

assert s1.foo == s2.foo

Related Contents

Pickup Contents