[python] 클래스의 특수 메서드를 이용한 연산 기능 구현 예제

클래스를 사용하여 사용자 정의 데이터 타입을 만들 때, 여러 연산이나 기능을 구현할 수 있습니다. 이때 파이썬에서는 특수 메서드를 이용하여 연산자 오버로딩을 지원합니다. 특수 메서드를 구현하면 해당 클래스의 인스턴스에 대해 다양한 연산을 적용할 수 있게 됩니다.

이 예제에서는 간단한 분수 계산기를 구현하여, 덧셈, 뺄셈, 곱셈, 나눗셈 연산을 지원하는 클래스를 작성해보겠습니다.

분수 클래스 구현

class Fraction:
    def __init__(self, numerator, denominator):
        self.numerator = numerator
        self.denominator = denominator

    def __add__(self, other):
        new_numerator = self.numerator * other.denominator + other.numerator * self.denominator
        new_denominator = self.denominator * other.denominator
        return Fraction(new_numerator, new_denominator)

    def __sub__(self, other):
        new_numerator = self.numerator * other.denominator - other.numerator * self.denominator
        new_denominator = self.denominator * other.denominator
        return Fraction(new_numerator, new_denominator)

    def __mul__(self, other):
        new_numerator = self.numerator * other.numerator
        new_denominator = self.denominator * other.denominator
        return Fraction(new_numerator, new_denominator)

    def __truediv__(self, other):
        new_numerator = self.numerator * other.denominator
        new_denominator = self.denominator * other.numerator
        return Fraction(new_numerator, new_denominator)

    def __str__(self):
        return f"{self.numerator}/{self.denominator}"

위 코드는 Fraction 클래스를 정의하고, 덧셈, 뺄셈, 곱셈, 나눗셈에 대한 특수 메서드를 구현한 것입니다. 각 연산에 해당하는 특수 메서드(__add__, __sub__, __mul__, __truediv__)를 정의하여 해당 연산을 수행한 결과를 새로운 분수 인스턴스로 반환하도록 구현하였습니다.

분수 계산기 사용 예제

f1 = Fraction(1, 2)
f2 = Fraction(1, 3)

print(f1 + f2)  # 5/6
print(f1 - f2)  # 1/6
print(f1 * f2)  # 1/6
print(f1 / f2)  # 3/2

위 코드는 Fraction 클래스를 사용하여 분수 계산을 수행한 예제입니다. 각 연산을 특수 메서드에 의해 처리되고, 그 결과가 적절한 형태의 분수로 출력됨을 확인할 수 있습니다.

이처럼 파이썬의 특수 메서드를 이용하면 사용자 정의 클래스에 여러 연산을 적용할 수 있으며, 이를 통해 다양한 기능을 지원하는 클래스를 구현할 수 있습니다.

참고 자료