파이썬/기초 프로그래밍

파이썬 스페셜 메서드는 왜 꼭 정해진 이름을 써야 할까?

Data Jun 2025. 3. 27. 15:37

파이썬에는 __enter__, __exit__, __len__ 같은
양쪽에 밑줄이 있는 특이한 함수들이 많이 나옵니다.
이런 걸 **스페셜 메서드 (혹은 magic method, dunder method)**라고 부르는데요,
질문 하나 던져볼게요:

왜 꼭 저런 이상한 이름을 그대로 써야 할까요? 이름 바꾸면 안 되나요?

 

결론 먼저!

스페셜 메서드는 파이썬 문법과 약속된 이름이기 때문에,
반드시 정해진 이름을 그대로 써야만 자동으로 호출됩니다.

 

 

예를 들어볼게요

파이썬에서 with 문을 사용할 수 있는 객체는 다음 두 가지 메서드를 꼭 가져야 해요:

def __enter__(self):
    ...
    
def __exit__(self, *excinfo):
    ...

이걸 enter()나 start() 같은 이름으로 바꾸면?

아무 일도 일어나지 않아요!
→ 파이썬은 with 문을 실행할 때 **오직 __enter__ / __exit__**만 찾습니다.

 

다른 예도 있어요

이것들도 전부 이름이 정해져 있고,
그 이름으로 되어 있어야만 파이썬이 알아보고 자동으로 호출합니다.

 

예외 처리 없이 자동 동작하는 이유?

이건 파이썬이 유연하면서도 강력한 문법 구조를 유지하기 위한 방식이에요.
개발자는 그저 정해진 이름만 지켜주면,
with, +, len() 같은 문법이 알아서 동작합니다.