포스트

파이썬에서 싱글톤 패턴 구현하기

싱글톤 패턴이란?

싱글톤 패턴(Singleton Pattern)이란 소프트웨어 디자인 패턴 중 하나로, 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 것을 목표로 합니다. 이 패턴은 데이터베이스 연결이나 로깅 같은 작업에서 유용하게 쓰입니다.

파이썬에서 싱글톤 패턴 구현 방법

__new__ 메소드 사용

1
2
3
4
5
6
7
class Singleton:
    _instance = None
    
    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls)
        return cls._instance

이 방법은 __new__라는 특별한 메소드를 이용합니다. __new__는 객체를 생성할 때 호출되는 메소드입니다.

데코레이터 사용

1
2
3
4
5
6
7
8
9
def singleton(cls):
    instances = {}
    
    def get_instance(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]
    
    return get_instance

이 방법은 데코레이터를 사용하여 간단하게 싱글톤을 구현할 수 있습니다. 데코레이터는 함수나 클래스를 장식하는 기능을 가지고 있습니다.

메타클래스 사용

1
2
3
4
5
6
7
8
9
10
class SingletonMeta(type):
    _instances = {}
    
    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(SingletonMeta, cls).__call__(*args, **kwargs)
        return cls._instances[cls]

class Singleton(metaclass=SingletonMeta):
    pass

메타클래스는 클래스의 클래스입니다. 여기서는 SingletonMeta라는 메타클래스를 만들어 싱글톤 패턴을 구현합니다.

결론

파이썬에서 싱글톤 패턴을 구현하는 방법은 여러 가지가 있습니다. __new__ 메소드를 사용할 수도 있고, 데코레이터나 메타클래스를 사용할 수도 있습니다. 필요에 따라 적절한 방법을 선택하면 됩니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.