본문 바로가기

Python/Python

[Python] Class 에서 return self 는 무엇을 의미할까?

반응형

이번 포스팅에서는 Python Class 문법에서 self를 return 하는 즉, return self 문법이 들어가는 이유가 무엇인지, 또 이런 문법을 사용하면 어떤 기능을 가능하게 하는지에 대해 알아보자. 이에 대해서는 원문 StackOverflow 질문을 해석하면서 이해한 것이므로 원본 질문은 여기를 참고하자.

 

Python

 

return self 는 cascading 메소드를 가능하게 한다고 한다. cascading 메소드란 무엇일까? 먼저 다음과 같은 return self를 사용하는 코드 예시가 있다.

 

class Counter:
    def __init__(self, start=1):
        self.val = start
    
    def increment(self):
        self.val += 1 
        return self
    
    def decrease(self):
        self.val -= 1
        return self
    
counter = Counter()
result = counter.increment().increment().decrease()
print(result.val)

 

위 코드를 출력시키면 2가 나오게 된다. 그런데 만약 위 코드블럭에서 return self 문법을 빼버리면 다음과 같은 에러가 발생한다.

 

class Counter:
    def __init__(self, start=1):
        self.val = start
    
    def increment(self):
        self.val += 1 
        return 
    
    def decrease(self):
        self.val -= 1
        return 
    
    
counter = Counter()
result = counter.increment().increment().decrease()
print(result.val)

 

에러가 발생

 

즉, return self 로 self.val 이라는 인스턴스 객체를 참조할 수 있게 해주는 것이다. Python에 이런 기능이 있었는지 몰랐다. 까도까도 새로운 양파 같은 파이썬이다..

반응형