Note 스페셜 메서드
__init__()나 __str__()처럼 이름 앞뒤로 언더바(_)가 2개씩 붙은 형태의 메서드를 스페셜 메서드(special method)라고 합니다. 또는 언더바가 2개 들어간다는 의미에서 던더 메서드(dunder method: double underscore method)라고도 하고요. 이들은 특별한 역할을 수행하기 위해 별도 처리를 하는 메서드입니다. __init__() 메서드는 객체가 생성될 때 자동으로 호출되고, __str__() 메서드는 print() 함수로 객체를 출력할 때 호출됩니다.
예를 들어, 다음과 같이 코드를 작성해 실행한다고 합시다.
class SpecialClass():
def __init__(self):
print("특별한 생성자")
def __str__(self):
return "특별한 메서드"
s = SpecialClass() # 특별한 생성자 출력
print(s) # 특별한 메서드 출력
실행결과 |
특별한 생성자 특별한 메서드 |
실행결과를 보면 객체가 생성될 때 자동으로 __init__() 메서드가 호출되어 특별한 생성자가 출력됩니다. 그리고 print() 함수로 객체 s를 출력하면 __str__() 메서드가 호출되어 특별한 메서드가 출력됩니다. 이외에도 객체 길이를 구할 때 호출되는 __len__(), 객체가 특정 요소를 포함하는지 확인할 때 호출되는 __contains__() 등이 있습니다.