Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 싱글톤(Singleton) 클래스를 생성하는 방법

싱글톤(Singleton) 패턴이란?

싱글톤 패턴은 클래스의 인스턴스가 오직 하나만 존재하도록 제한하는 디자인 패턴입니다. 이를 통해 동일한 객체가 코드의 여러 부분에서 항상 공유되며, 프로그램 전체에서 상태의 일관성을 유지할 수 있습니다.

실제 데이터가 싱글톤 클래스의 인터페이스 뒤에 숨겨져 있기 때문에, 싱글톤은 전역 변수보다 더 우아하고 안전한 대안으로 평가됩니다. 전역 변수처럼 어디서든 접근할 수 있으면서도 캡슐화라는 이점을 함께 얻을 수 있고, 네임스페이스 오염 문제도 피할 수 있기 때문입니다.

Python으로 싱글톤 클래스 구현하기

파이썬에서 싱글톤 클래스를 만드는 방법은 여러 가지가 있으며, 그중 __new__ 메서드를 오버라이드하는 방식이 대표적입니다. 다음 코드는 그중 하나의 예시입니다.

class Singleton(object):
    _instance = None
    def __new__(class_, *args, **kwargs):
        if not isinstance(class_._instance, class_):
            class_._instance = object.__new__(class_, *args, **kwargs)
        return class_._instance
class MyClass(Singleton, BaseClass):
    pass

이 방식의 특징

위 구현 방식의 가장 큰 장점은 진정한 클래스(true class)라는 점입니다. 즉, 단순한 모듈 수준의 객체가 아니라 일반 클래스처럼 상속이 가능하며, 다른 베이스 클래스(BaseClass)와 함께 다중 상속도 자연스럽게 활용할 수 있습니다.

또한 인스턴스 생성 로직이 클래스 내부에 캡슐화되어 있어 코드의 재사용성과 유지보수성이 뛰어나고, 이미 인스턴스가 존재하는 경우에는 기존 인스턴스를 그대로 반환하므로 중복 생성을 확실하게 방지할 수 있습니다.