[python] 클래스의 특수 메서드 활용

Python 클래스는 특수 메서드를 사용하여 객체의 생성, 연산자 오버로딩, 컨텍스트 관리 등 다양한 기능을 지원합니다. 이러한 특수 메서드를 적절히 활용하여 클래스를 정의하고 활용하는 방법에 대해 알아봅시다.

1. __init__ 메서드

__init__ 메서드는 클래스의 인스턴스가 생성될 때 자동으로 호출되는 메서드입니다. 이 메서드를 사용하여 객체의 초기화 작업을 수행할 수 있습니다.

class MyClass:
    def __init__(self, param1, param2):
        self.param1 = param1
        self.param2 = param2

obj = MyClass(10, 20)

2. 연산자 오버로딩

특수 메서드를 사용하여 연산자의 동작을 재정의할 수 있습니다. 예를 들어, __add__ 메서드를 정의하여 덧셈 연산자의 동작을 재정의할 수 있습니다.

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)

v1 = Vector(1, 2)
v2 = Vector(3, 4)
result = v1 + v2

3. 컨텍스트 관리

with 문과 함께 사용되는 __enter____exit__ 메서드를 정의하여 컨텍스트 관리 기능을 지원할 수 있습니다.

class MyResource:
    def __enter__(self):
        print("Entering the resource")
    
    def __exit__(self, exc_type, exc_value, traceback):
        print("Exiting the resource")

with MyResource() as resource:
    # 작업 수행
    pass

4. 기타 특수 메서드

그 외에도 __str__, __repr__, __len__ 등 다양한 특수 메서드를 활용하여 객체의 문자열 표현, 출력 형식, 길이 등을 지원할 수 있습니다.

Python 클래스의 특수 메서드는 다양한 기능을 지원하며, 이를 활용하여 보다 유연하고 강력한 객체 지향 프로그래밍을 구현할 수 있습니다.

참고 문헌: Python 공식 문서