__getitem__ / __setitem__ / __delitem__

About_work·2023년 1월 10일
0

python 기초

목록 보기
7/56

개념

slicing 혹은 list index에 접근을 이용하려면 세 magic method가 필요하다.

  • slicing이란 sequence를 여러 조각으로 나누는 구문을 말한다.
  • 어떤 파이썬 class에도 slicing을 추가할 수 있다.
    • __getitem____setitem__ 특별 method를 구현하면 된다.
    • getitem / setitem / delitem 은 list index 에 엑세스 할 때 호출되는 magic method 입니다.

magic method?

  • 더블 언더스코어로 시작해서, 더블 언더스코어로 끝나는 메서드
  • 특별한 기능을 제공
  • 언제쓸까?
      • 인스턴스 생성시 자동으로 호출되는 __init__
      • 인덱싱 기능을 제공하고 싶을 때
      • 덧셈 연산자를 수행할 떄, 어떤 정해진 동작이 수행되도록 하려고 할 때

참고: container?

  • 컨테이너는 sequence(list와 tuple 등)+ mapping(dictionary 등)

사용법

__getitem__(self, key)

  • 객체에서 [] 연산자를 사용하여 조회할때 동작을 정의합니다.
  • 예를들어 list[10]list.__getitem__(10)으로 동작합니다.
    키의 타입이 적절하지 않다면 TypeError에러를, 키가 인덱스를 벗어났을 경우는 IndexError를 던져야 합니다.

__setitem__(self, key, value)

  • 객체에서 [] 연산자를 사용해서 변수를 지정할때 동작을 정의합니다.
  • 예를들어 list[10] = 1list.__setitem__(10, 1)으로 동작합니다.

__delitem__(self, key)

  • del object[]를 사용하는 경우 동작을 정의합니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글