더북(TheBook)

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) # 특별한 메서드 출력

실행결과 icon_con

특별한 생성자
특별한 메서드

실행결과를 보면 객체가 생성될 때 자동으로 __init__() 메서드가 호출되어 특별한 생성자가 출력됩니다. 그리고 print() 함수로 객체 s를 출력하면 __str__() 메서드가 호출되어 특별한 메서드가 출력됩니다. 이외에도 객체 길이를 구할 때 호출되는 __len__(), 객체가 특정 요소를 포함하는지 확인할 때 호출되는 __contains__() 등이 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.