-
[Python] return self는 method chaining을 위함이다.Programming 기초/Python 2023. 8. 5. 00:04
* 클래스 내의 메서드(Method)에서 return self를 하는 이유
- 메서드 체이닝(Chaining)과 메서드 호출의 연속적인 처리를 용이하게 하기 위함이다.
- 메서드 체이닝은 한 줄의 코드에서 여러 메서드를 연속적으로 호출하는 기법을 의미한다.
- 예를 들어, obj.method1().method2().method3()와 같이 객체 obj의 메서드들을 연속해서 호출하는 것을 말한다. 이때 메서드는 각각 self를 반환해야만 메서드 체이닝이 가능해진다.
- 메서드가 return self를 반환하면 해당 메서드는 자기 자신의 인스턴스를 반환한다. 따라서 다른 메서드를 호출할 때에도 동일한 객체에 대해 메서드를 연속해서 호출할 수 있게 된다.
- 이는 코드를 간결하고 가독성이 높게 만들어준다.
예를 들어, 다음은 Person 클래스의 메서드 체이닝을 사용하는 예시이다.
class Person: def __init__(self, name, age): self.name = name self.age = age def set_name(self, name): self.name = name return self def set_age(self, age): self.age = age return self def say_hello(self): print(f"Hello, my name is {self.name} and I'm {self.age} years old.") return self # 메서드 체이닝 사용 예시 person = Person("Alice", 30) person.set_name("Bob").set_age(25).say_hello()
위 예시에서 set_name()과 set_age() 메서드는 각각 self를 반환하도록 정의되어 있다.
따라서 person.set_name("Bob")은 person 객체를 반환하고, person.set_age(25)도 person 객체를 반환한다.
따라서 메서드를 연속적으로 호출할 수 있으며, 가장 마지막에 있는 say_hello() 메서드를 호출하여 결과를 출력할 수 있다.
'Programming 기초 > Python' 카테고리의 다른 글
context manager란? (0) 2024.12.03 [python] 기억해 둘 파이썬 문법&개념 (0) 2023.08.19 [python#tip] PEP8- code style (0) 2023.07.26 [Python 자료구조 #고급정렬3] 기수 정렬(radix sort), 카운팅 정렬(counting sort), 팀 정렬(Timsort) (0) 2023.06.02 [Python 자료구조 #고급정렬2] 병합정렬(merge sort), 퀵 정렬(quick sort), 이중피벗 퀵 정렬(dual pivot quick sort) (0) 2023.06.01