파이썬 getter -> __getitem__이란?

minsing-jin·2025년 5월 5일
0

__getitem__은 파이썬에서 객체가 인덱싱(obj[key]) 또는 슬라이싱(obj[start:stop])될 때 호출되는 메서드입니다. 이 메서드를 클래스 안에 정의하면, 해당 클래스의 인스턴스를 리스트나 딕셔너리처럼 사용할 수 있습니다.


📌 기본 사용법

class MyList:
    def __init__(self, data):
        self.data = data

    def __getitem__(self, index):
        print(f"Called with index: {index}")
        return self.data[index]

my_list = MyList([10, 20, 30])
print(my_list[1])  # => Called with index: 1
                   # => 20

🎯 주요 특징

  • obj[key]가 호출되면 obj.__getitem__(key)가 자동으로 호출됩니다.
  • key는 정수뿐만 아니라 슬라이스(slice), 튜플, 문자열 등도 될 수 있습니다.

✅ 슬라이싱도 지원 가능

class MyList:
    def __init__(self, data):
        self.data = data

    def __getitem__(self, index):
        print(f"Index received: {index}")
        return self.data[index]

lst = MyList([1, 2, 3, 4, 5])
print(lst[1:4])  # 슬라이스 객체(slice(1,4,None))가 전달됨

📦 예제: 2차원 배열 흉내내기

class Matrix:
    def __init__(self, rows):
        self.rows = rows

    def __getitem__(self, index):
        return self.rows[index]

m = Matrix([[1, 2], [3, 4]])
print(m[0][1])  # 2

⚠️ 주의사항

  • __getitem__읽기 전용입니다. 쓰기를 하려면 __setitem__을 정의해야 합니다.
  • KeyError, IndexError 등을 적절히 처리해주는 것이 좋습니다.

궁금하다면 __setitem__, __delitem__ 도 함께 설명해줄 수 있어요. 추가로 알려드릴까요?

profile
why not? 정신으로 맨땅에 헤딩하고 있는 코린이

0개의 댓글