파이썬 특수 메서드 __getitem__
요약
__getitem__은 객체를 인덱싱할 수 있도록 해주는 메서드이다.
설명
__getitem__은 파이썬의 특수 메서드 중 하나로, 클래스의 인스턴스가 리스트나 딕셔너리처럼 대괄호 []를 이용해 특정 요소에 접근할 수 있게 해준다.
우리가 흔히 리스트나 딕셔너리에서 obj[key] 혹은 obj[index] 형태로 값을 불러올 때, 파이썬 내부적으로는 해당 객체의 obj.__getitem__(key)가 호출된다. 따라서 사용자가 직접 정의한 커스텀 클래스에서도 이 메서드를 구현해주면, 파이썬의 내장 시퀀스 자료형과 동일한 방식으로 직관적인 데이터 접근이 가능해진다.
코드
class CustomData:
def __init__(self, data):
self.data = data
def __getitem__(self, index):
print(f"인덱스 {index}에 접근했습니다.")
return self.data[index]
# 객체 생성
>>> a = CustomData([10, 20, 30, 40, 50])
# 단일 인덱싱
>>> a[2]
인덱스 2에 접근했습니다.
30
# 슬라이싱
>>> a[1:4]
인덱스 slice(1, 4, None)에 접근했습니다.
[20, 30, 40]
위 코드에서 볼 수 있듯이, a[2]를 호출하면 내부적으로 a.__getitem__(2)가 실행되어 미리 정의한 출력문과 함께 값을 반환한다. a[1:4]와 같이 슬라이싱을 사용할 경우에도 __getitem__이 호출되며, 이때 인자로 정수가 아닌 slice 객체가 전달된다.
환경
- Windows 11
- Python 3.10.11

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

