반응형
먼저 간략하게 Singleton 패턴이 무엇인지 알아보고 진행하겠습니다.
Singleton 패턴 이란?
Singleton 패턴은 전체 프로그램 스콥에서, 특정 클래스를 사용할 때, 단 하나의 인스턴스만 생성해서 사용하는 패턴입니다. 하나의 인스턴스를 사용하게 되면 다음과 같은 장점이 있습니다.
- 공유 자원에 대해서 동시 접근을 제한할 수 있습니다.
- 전역에서 사용가능한 리소스를 생성할 수 있습니다.
- 프로그램 스콥에서 단 하나의 인스턴스만 생성해서 사용하기 때문에 메모리 낭비를 막을 수 있습니다.
모듈 레벨의 Singleton
python에서는 기본적으로 모든 module 은 singleton 으로 정의되어 있습니다. 다음의 예시는 하나의 프로그램 내에서 실행하거나 혹은 동일 shell에서 실행해야 확인이 가능합니다.
## singleton.py
# shared_variable에 초기값 지정
shared_variable = "init value"
## module1.py
import singleton
# 원래 shared_variable에 있는 내용을 확인
print(singleton.shared_variable)
# shared_variable에 내용을 추가
singleton.shared_variable += ", some text"
## module2.py
import singleton
# shared_variable에 있는 내용을 확인
print(singleton.shared_variable)
실행결과
클래스 레벨의 Singleton
이번에는 클래스를 정의해서 singleton 패턴을 구현해 보도록 하겠습니다.
python에서는 클래스의 생성자에서 특정 attribute을 정의해서 항상 같은 값을 바라보는 결과를 리턴하게 처리하면 됩니다.
class SingletonClass():
def __new__(cls):
if not hasattr(cls, "instance"):
cls.instance = super().__new__(cls)
return cls.instance
python shell에서 다음과 같이 실행해 보면, SingletonClass로 생성한 instance의 결과가 같다는 것을 알 수 있습니다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
decorator 사용하기 (0) | 2024.06.06 |
---|---|
9. 파일 관리 (0) | 2019.02.21 |
8. 파일 읽고 쓰기 (0) | 2019.02.21 |
7. 정규 표현식 (0) | 2019.01.09 |
6. 문자열 다루기 (0) | 2019.01.08 |