모듈 2

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

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

파이썬에서 직접 만든 패키지를 불러오자. (feat. 절대 경로와 상대 경로)

파이썬에 내장된 패키지나 모듈은 build-in modules에, pip 등으로 다운로드한 패키지나 모듈은 sys.path에 저장되기 때문에 쉽게 이름만으로 불러올 수 있지만, 직접 만든 로컬 패키지의 경우 '절대 경로', '상대 경로'에 따라 다음과 같은 import 에러 메시지를 만나게 될 수 있다. from .package import module2 >>> ImportError: attempted relative import with no known parent package #ImportError: 알려진 상위 패키지가 없는 상대 가져오기 시도 이 문제를 해결하기 위해 절대 경로와 상대 경로에 대해 알아보고 어떤 식으로 import 해야 하는 살펴보자. 우선 아래 처럼 project1 안에 주로 ..