매직 메서드
매직 메서드(Magic Method)는 객체 지향 프로그래밍 언어에서 인터프리터나 런타임 환경에 의해 암시적으로(Implicitly) 호출되는 특수한 메서드다. 개발자가 직접 호출하지 않아도 객체의 생성, 소멸, 연산자 사용, 속성 접근 등의 특정 작업이 발생할 때 시스템 내부적으로 자동 실행된다. 언어의 핵심적인 기본 동작을 사용자 정의 클래스에 맞게 오버로딩(Overloading)할 수 있도록 돕는다.
이 용어는 주로 파이썬(Python)과 PHP 커뮤니티에서 문서화되어 사용된다. 파이썬에서는 메서드 이름의 앞뒤에 두 개의 밑줄(Double underscore)이 붙는 명명 규칙을 가지며, 이를 축약하여 던더(Dunder) 메서드라고도 칭한다(예: __init__, __str__, __add__). PHP에서도 __construct, __get과 같이 이중 밑줄로 시작하는 형태로 정의된다.
일반 메서드와 매직 메서드의 설계적 특성 비교 데이터다.
| 비교 항목 | 매직 메서드 (Magic Methods) | 일반 메서드 (Regular Methods) |
|---|---|---|
| 호출 방식 | 암시적 (객체에 대한 특정 연산이나 이벤트 발생 시 엔진이 자동 호출) | 명시적 (개발자가 코드 내에서 인스턴스를 통해 직접 호출) |
| 명명 규칙 | 언어 스펙으로 사전 정의됨 (주로 __ 접미사 및 접두사 사용) | 개발자가 명명 컨벤션에 따라 자율적으로 정의 |
| 주요 목적 | 연산자 오버로딩, 객체 생명주기 제어, 내장 함수와의 호환성 제공 | 비즈니스 로직 수행 및 애플리케이션 요구사항 구현 |
| 대표적인 사례 | __init__(), __len__() (Python) / __construct() (PHP) | calculate_total(), fetch_user_data() |
출처(Sources):
- Python Software Foundation - “Data model: Special method names”: https://docs.python.org/3/reference/datamodel.html#special-method-names
- The PHP Group - “Magic Methods”: https://www.php.net/manual/en/language.oop5.magic.php
- O’Reilly Media - “Fluent Python” by Luciano Ramalho (Chapter 1. The Python Data Model): https://www.oreilly.com/library/view/fluent-python/9781491946237/