Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Python/파이썬] 싱글턴(Singleton) 패턴: 다양한 방법으로 구현하기 본문
싱글턴 패턴은 어플리케이션 내에서 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴입니다. Python에서는 여러 가지 방법으로 싱글턴을 구현할 수 있습니다. 이번 글에서는 세 가지 방법을 살펴보겠습니다.
1. 모듈을 이용한 싱글턴
파이썬의 모듈은 처음 가져올 때 한 번만 초기화되고 이후에는 메모리에 캐싱되므로 싱글턴을 간단하게 구현할 수 있습니다.
# singleton.py
class Singleton:
def __init__(self):
pass
singleton_instance = Singleton()
2. 데코레이터를 이용한 싱글턴
데코레이터를 사용하여 클래스를 싱글턴으로 만들 수 있습니다. 이를 위해 클래스를 감싸는 함수를 작성하고, 해당 함수에 데코레이터를 적용합니다.
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
@singleton
class Singleton:
def __init__(self):
pass
3. 메타클래스를 이용한 싱글턴
메타클래스를 사용하여 클래스 생성 시에 싱글턴 패턴을 적용할 수 있습니다. 메타클래스는 클래스를 생성하는 클래스로, 클래스의 동작을 변경할 수 있습니다.
class SingletonMeta(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]
class Singleton(metaclass=SingletonMeta):
def __init__(self):
pass
위의 세 가지 방법으로 Python에서 싱글턴 패턴을 구현할 수 있습니다. 각 방법은 다양한 상황에 맞게 선택하여 사용할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
[Python/파이썬] 리스트 역순으로 순회하기 (0) | 2024.03.02 |
---|---|
[Python/파이썬] 리스트 복사: Deep Copy vs Shallow Copy (0) | 2024.03.02 |
[Python/파이썬] 가상환경 구성 및 설정: venv 활용하기 (0) | 2024.03.02 |
[Python/파이썬] 명령행 인자 받기: argparse 모듈 활용하기 (0) | 2024.03.02 |
[Python/파이썬] 리스트 필터링: 다양한 방법으로 익히기 (0) | 2024.03.02 |