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

파이썬 싱글톤 패턴: 객체 생성과 활용의 최적화

by 뷰티풀스택 2023. 7. 10.
반응형

싱글톤(Singleton)은 객체지향 디자인 패턴 중 하나로, 오직 하나의 인스턴스만을 생성하도록 보장하는 패턴입니다. 이 패턴을 사용하면 클래스의 인스턴스를 단 한 번 생성하여 여러 곳에서 공유할 수 있습니다. 이를 통해 메모리 공간을 절약하고 객체의 일관성을 유지할 수 있습니다.

 

파이썬에서 싱글톤 패턴을 구현하기 위해서는 `__new__` 메소드를 오버라이딩하여 인스턴스를 생성하는 방법을 사용합니다. 이 제약 사항은 클래스의 초기화를 담당하는 `__init__` 메소드와는 달리 이미 인스턴스가 생성되었는지 확인하여 생성된 인스턴스가 존재한다면 기존 인스턴스를 반환하도록 구현할 수 있습니다.

 

다음은 파이썬에서 싱글톤 패턴을 구현하는 예시 코드입니다:

 

```python

class Singleton:

    _instance = None  # 인스턴스 저장을 위한 클래스 변수

 

    def __new__(cls, *args, **kwargs):

        if not cls._instance:

            cls._instance = super().__new__(cls, *args, **kwargs)

        return cls._instance

 

# 싱글톤 인스턴스 생성

singleton_instance1 = Singleton()

singleton_instance2 = Singleton()

 

assert singleton_instance1 is singleton_instance2  # True 출력

```

 

위 예시 코드에서 `_instance`는 클래스 변수로 사용되어 인스턴스 생성 여부를 체크합니다. `__new__` 메소드를 오버라이딩하여 `_instance`가 없는 경우에만 인스턴스를 생성하고, 그렇지 않은 경우 기존 인스턴스를 반환하도록 구현합니다. 따라서 `singleton_instance1`과 `singleton_instance2`는 동일한 인스턴스를 참조하게 됩니다.

 

위 코드 예시를 실행하면 `assert` 문이 True를 반환하여 싱글톤 패턴이 제대로 구현되었음을 확인할 수 있습니다.

 

파이썬 공식 문서에서는 `singleton` 패턴에 대한 구현 방법과 예시 코드를 자세히 다루고 있으니 참고하시기 바랍니다:

https://docs.python.org/3/library/stdtypes.html#singleton

반응형

댓글