logo

파이썬 특수 메서드 __getitem__ 📂프로그래밍

파이썬 특수 메서드 __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