싱글톤 2

모노스테이트, 메타클래스, 싱글톤 구현예시

모노스테이트 싱글톤 패턴 The Monostate Singleton Pattern 객체 생성여부 보다는 상태와 행위에 초점을 맞춘 패턴 단일 객체가 아닌, 모든 객체가 같은 상태를 공유하는 패턴 __init__ 으로 구현 하는 방법 # __init__ 으로 구현하는 방법 class Mono: __shared_state = {"공유":"데이터"} def __init__(self): self.data = 1 self.__dict__ = self.__shared_state pass obj = Mono() obj.data = 9999 other_obj = Mono() print(f"{obj=}") print(f"{other_obj=}") """ 결과값. 서로 다른 인스턴스임을 확인할 수 있음 obj= other..

싱글톤 패턴, 게으른 초기화, 모듈 싱글톤

싱글톤 패턴 글로벌하게 접근 가능한 단 한 개의 객체만을 허용하는 패턴 주로 로깅이나 디비, 프린터 스풀러 등 동일한 리소스에 대한 동시 요청의 충돌을 막기 위해 사용 목적 클래스에 대한 단일 객체 생성 전역 객체 제공 공유된 리소스에 대한 동시 접근 제어 구현 코드 class Singleton(object): # __new__를 오버라이드 한다. def __new__(cls): # hasattr는 객체가 instance 속성을 가지고 있는지 확인한다. (객체의 존재 유무 확인) if not hasattr(cls, 'instance'): # 클래스 객체가 없다면 객체를 할당한다. cls.instance = super(Singleton, cls).__new__(cls) # 기존 또는 할당한 객체를 반환한다..