클래스로 생성된 객체의 메서드 체이닝을 구현하는 방법은 무엇인가요?

메서드 체이닝을 구현하려면 먼저 클래스 내부에서 메서드가 this를 반환하도록 설계해야 합니다. 이렇게하면 메서드 호출 뒤에 연결된 다른 메서드를 호출할 수 있습니다.

아래는 메서드 체이닝을 구현하는 예시 코드입니다.

class Calculator:
    def __init__(self):
        self.result = 0
    
    def add(self, num):
        self.result += num
        return self  # self를 반환해서 메서드 체이닝을 가능하게 함
    
    def subtract(self, num):
        self.result -= num
        return self
    
    def multiply(self, num):
        self.result *= num
        return self
    
    def divide(self, num):
        self.result /= num
        return self

# 메서드 체이닝 사용 예시
calc = Calculator()
result = calc.add(5).multiply(3).subtract(2).divide(2).result
print(result)  # 출력: 10

위의 예시 코드에서는 Calculator 클래스를 정의하고, add(), subtract(), multiply(), divide() 메서드를 구현합니다. 각 메서드는 self.result에 연산을 수행하고 self를 반환하도록 작성됩니다.

메서드 체이닝을 사용하면 calc.add(5).multiply(3).subtract(2).divide(2)와 같이 여러 메서드를 연이어 호출할 수 있습니다. 호출된 메서드는 이전 메서드 호출의 결과인 self를 반환하므로, 다음 메서드를 바로 호출할 수 있습니다.

결과를 얻기 위해선 마지막에 result 속성을 참조하면 됩니다.

이와 같이 메서드 체이닝을 활용하여 객체의 메서드를 연속적으로 호출하면 코드를 짧게 유지할 수 있으며, 코드의 가독성을 높일 수 있습니다.

참고 자료: