Programming 기초/Python
[Python] return self는 method chaining을 위함이다.
코딩상륙작전
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() 메서드를 호출하여 결과를 출력할 수 있다.