Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 기본 오버로딩 메서드 완벽 정리

파이썬(Python)은 객체지향 언어로서, 클래스 내부에 특수 메서드(매직 메서드, 던더 메서드)를 정의하면 연산자나 내장 함수의 기본 동작을 재정의할 수 있습니다. 이를 기본 오버로딩(Default Overloading)이라고 부르며, 이를 잘 활용하면 사용자 정의 클래스를 마치 리스트나 문자열 같은 내장 타입처럼 자연스럽게 다룰 수 있습니다.

재정의 가능한 주요 메서드 목록

아래 표는 사용자 정의 클래스에서 오버로딩할 수 있는 대표적인 일반 기능들을 정리한 것입니다.

번호메서드 · 설명 · 호출 예시
1__init__( self [,args...] )
생성자(Constructor) — 객체 생성 시 초기화를 담당하며, 선택적 인자를 받을 수 있습니다.
호출 예시 : obj = className(args)
2__del__( self )
소멸자(Destructor) — 객체가 삭제될 때 호출됩니다.
호출 예시 : del obj
3__repr__( self )
평가 가능한(evaluable) 문자열 표현 — 디버깅 및 개발자용 공식 표현에 사용됩니다.
호출 예시 : repr(obj)
4__str__( self )
출력 가능한(printable) 문자열 표현 — print() 함수 등 사용자에게 보여질 형태를 정의합니다.
호출 예시 : str(obj)
5__cmp__( self, x )
객체 비교 — 두 객체의 크기를 비교합니다.
호출 예시 : cmp(obj, x)

메서드별 상세 설명

1. __init__ : 생성자

객체가 생성되는 순간 자동으로 호출되어 인스턴스 변수를 초기화하는 역할을 합니다. 파이썬 클래스에서 가장 기본적이고 필수적인 오버로딩 메서드입니다.

2. __del__ : 소멸자

객체가 더 이상 참조되지 않아 메모리에서 제거될 때 호출됩니다. 파일 핸들 닫기 등 정리 작업에 활용할 수 있지만, 실행 시점이 명확하지 않으므로 신중하게 사용해야 합니다.

3. __repr__ vs __str__ : 문자열 표현

__repr__은 개발자를 위한 공식적이고 평가 가능한 표현을, __str__은 최종 사용자를 위한 읽기 쉬운 출력 형식을 담당합니다. 두 메서드가 모두 정의되어 있으면 print()는 __str__을 우선적으로 사용합니다.

4. __cmp__ : 객체 비교 (참고 사항)

__cmp__는 파이썬 2에서 두 객체를 한 번에 비교하던 메서드입니다. 다만 파이썬 3부터는 제거되었으며, 대신 __lt__(<), __le__(<=), __eq__(==), __ne__(!=), __gt__(>), __ge__(>=)와 같은 풍부한 비교 메서드(Rich Comparison Methods)를 개별적으로 구현해야 합니다.

마무리

이처럼 파이썬의 오버로딩 메서드를 적절히 활용하면 클래스의 동작을 유연하게 확장하고, 코드의 가독성과 직관성을 크게 높일 수 있습니다. 실제 프로젝트에서는 __init__, __str__, __repr__부터 먼저 익히는 것을 추천합니다.