본문 바로가기
카테고리 없음

Python - Python에서 싱글톤 패턴 구현하기

by hhhello 2024. 6. 16.

파이썬에서 싱글톤 구현하는 방법을 알아보자.

싱글톤을 왜 사용하는가

한 인스턴스만 생성해서 그것만 사용하고 싶을때 쓴다.

장점으로는 메모리 낭비 방지, 인스턴스를 전역적으로 쓸 수 있어 다른 코드에서 해당 싱글톤의 데이터를 공유할 수 있다는 점이다.

하지만 싱글톤 클래스에게 너무 많은 일을 위임하거나 데이터를 공유시키면 클래스 간의 결합도가 높아져 개방폐쇄원칙에 위배된다. 또, 멀티스레드 환경에서 문제가 발생할 수 있다.

결론적으로 꼭 필요한 경우에만 만들어 사용해야 한다.

싱글톤을 구현한 코드는 아래와 같다.

Singleton클래스를 상속받은 뒤 instance메서드를 써서 인스턴스를 얻으면 끝이다.

class Singleton:
    __instance = None

    @classmethod
    def __getInstance(cls):
        return cls.__instance

    @classmethod
    def instance(cls):
        cls.__instance = cls()
        cls.instance = cls.__getInstance
        return cls.__instance

class MyClass(Singleton):
    pass

print(MyClass.instance() == MyClass.instance())  # True