파이썬에는 __enter__, __exit__, __len__ 같은
양쪽에 밑줄이 있는 특이한 함수들이 많이 나옵니다.
이런 걸 **스페셜 메서드 (혹은 magic method, dunder method)**라고 부르는데요,
질문 하나 던져볼게요:
왜 꼭 저런 이상한 이름을 그대로 써야 할까요? 이름 바꾸면 안 되나요?
결론 먼저!
스페셜 메서드는 파이썬 문법과 약속된 이름이기 때문에,
반드시 정해진 이름을 그대로 써야만 자동으로 호출됩니다.
예를 들어볼게요
파이썬에서 with 문을 사용할 수 있는 객체는 다음 두 가지 메서드를 꼭 가져야 해요:
def __enter__(self):
...
def __exit__(self, *excinfo):
...
이걸 enter()나 start() 같은 이름으로 바꾸면?
→ 아무 일도 일어나지 않아요!
→ 파이썬은 with 문을 실행할 때 **오직 __enter__ / __exit__**만 찾습니다.
다른 예도 있어요
이것들도 전부 이름이 정해져 있고,
그 이름으로 되어 있어야만 파이썬이 알아보고 자동으로 호출합니다.
예외 처리 없이 자동 동작하는 이유?
이건 파이썬이 유연하면서도 강력한 문법 구조를 유지하기 위한 방식이에요.
개발자는 그저 정해진 이름만 지켜주면,
with, +, len() 같은 문법이 알아서 동작합니다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
_wrapfunc()는 NumPy 내부에서 정의한 유틸리티 함수 (0) | 2025.03.27 |
---|---|
NumPy의 _wrapfunc()는 뭘 할까? — np.round()의 진짜 동작 방식 (0) | 2025.03.27 |
파이썬에서 _internal.py 같은 모듈은 왜 언더바로 시작할까? (0) | 2025.03.27 |
파이썬 hasattr() 제대로 이해하기 – 반복 가능한 객체 판별 (0) | 2025.03.27 |
파이썬 __all__ 완벽 정리 – 진짜 하는 일이 뭘까? (0) | 2025.03.27 |