데코레이터를 사용하여 싱글톤 패턴을 구현할 수 있습니다. 데코레이터는 함수나 클래스를 감싸는 역할을 하기 때문에 싱글톤 인스턴스를 생성하고 관리하는 데 적합합니다.
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, value):
self.value = value
# 싱글톤 인스턴스 생성
singleton1 = Singleton('First Instance')
print(singleton1.value) # 출력: First Instance
# 또 다른 싱글톤 인스턴스 생성 시도
singleton2 = Singleton('Second Instance')
print(singleton2.value) # 출력: First Instance
# 두 객체가 동일한 객체인지 확인
print(singleton1 is singleton2) # 출력: True
데코레이터와 메타클래스는 모두 파이썬에서 클래스를 수정하거나 확장하는 데 사용되지만, 그 목적과 사용 방식에는 몇 가지 중요한 차이점이 있습니다. 아래에서 각각의 개념을 설명하고 그 차이점을 정리하겠습니다.
데코레이터는 함수나 클래스를 감싸는 또 다른 함수입니다. 데코레이터는 클래스나 함수의 동작을 수정하거나 확장하는 데 주로 사용됩니다.
메타클래스는 클래스를 생성하는 클래스입니다. 파이썬의 모든 클래스는 `type`이라는 메타클래스의 인스턴스입니다. 메타클래스를 사용하면 클래스의 생성과 초기화를 제어할 수 있습니다.
데코레이터와 메타클래스는 각각의 상황에 맞게 사용될 수 있으며, 필요에 따라 적절한 방법을 선택하면 됩니다. 데코레이터는 간단한 수정 및 확장이 필요할 때, 메타클래스는 클래스 생성 과정 자체를 제어해야 할 때 유용합니다.
[Python] Metaclass를 이용한 Singleton Pattern 구현
파이썬에서 싱글톤 패턴을 구현하는 가장 효과적이고 효율적인 방법 중 하나는 메타클래스를 사용하는 것입니다. 메타클래스를 사용하면 싱글톤 패턴을 더 깔끔하게 구현할 수
tuu-lx.tistory.com
[Python] 직렬화와 역직렬화 (0) | 2024.07.20 |
---|---|
[Python] Metaclass를 이용한 Singleton Pattern 구현 (0) | 2024.06.01 |
[Python] 싱글톤 패턴(Singleton Pattern) (0) | 2024.06.01 |