반응형
이번 포스팅에서는 Python Class 문법에서 self를 return 하는 즉, return self 문법이 들어가는 이유가 무엇인지, 또 이런 문법을 사용하면 어떤 기능을 가능하게 하는지에 대해 알아보자. 이에 대해서는 원문 StackOverflow 질문을 해석하면서 이해한 것이므로 원본 질문은 여기를 참고하자.
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에 이런 기능이 있었는지 몰랐다. 까도까도 새로운 양파 같은 파이썬이다..
반응형
'Python > Python' 카테고리의 다른 글
[Python] iterator 와 generator에 대해 알아보기 (0) | 2021.10.16 |
---|---|
[Python] staticmethod 와 classmethod 쓰임의 차이 (0) | 2021.08.27 |
[Python] yield로 제네레이터 함수 만들기 (0) | 2021.08.25 |
[Python] 클래스 상속 시 super() 의 쓰임 (0) | 2021.08.25 |
[Python 중급] 일급함수(First-class)와 클로저, 데코레이터 (0) | 2020.12.27 |