파이썬에서 싱글톤 패턴 구현하기
싱글톤 패턴이란?
싱글톤 패턴(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 라이센스를 따릅니다.