logo

Python의 __getitem__()

Python에서는 모든 것이 객체입니다. 프로그래머에게 보이지 않는 이면에는 이러한 객체에 대한 '일반적인' 시스템 호출 메서드가 많이 있습니다. 여기라고 불리는 것이 왔습니다. 마법의 방법 . Python의 매직 메소드는 일반적인 Python 코드를 실행할 때 호출되는 특수 메소드입니다. 일반 기능과 구별하기 위해 주위에 이중 밑줄이 표시됩니다.

a와 b를 추가하려면 다음 구문을 작성합니다.



 c = a + b>

내부적으로는 다음과 같이 호출됩니다.

 c = a.__add__(b)>

__getitem__()>클래스에서 사용될 때 인스턴스가[]>(인덱서) 연산자. x가 이 클래스의 인스턴스라고 가정하면x[i]>대략 동일하다type(x).__getitem__(x, i)>.

방법__getitem__(self, key)>표기법을 사용하여 항목에 액세스할 때의 동작을 정의합니다.self[key]>. 이는 또한 변경 가능 및 불변 컨테이너 프로토콜의 일부입니다.



예:




크루스칼 알고리즘



자바스크립트 수면

# Code to demonstrate use> # of __getitem__() in python> > > class> Test(>object>):> > ># This function prints the type> ># of the object passed as well> ># as the object item> >def> __getitem__(>self>, items):> >print> (>type>(items), items)> > # Driver code> test>=> Test()> test[>5>]> test[>5>:>65>:>5>]> test[>'techcodeview.com'>]> test[>1>,>'x'>,>10.0>]> test[>'a'>:>'z'>:>2>]> test[>object>()]>

>

>

산출:

 5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2)>

다른 언어와 달리 Python에서는 기본적으로 모든 개체를 인덱서에 전달할 수 있습니다. 당신은 놀랄 수도 있습니다test[1, 'x', 10.0]>실제로 구문 분석합니다. Python 인터프리터에서 해당 표현식은 다음과 동일합니다.test.__getitem__((1, 'x', 10.0))>. 보시다시피 1, 'x', 10.0 부분은 암시적으로 튜플로 구문 분석됩니다. 그만큼test[5:65:5]>표현식은 Python의 슬라이스 구문을 사용합니다. 이는 test[slice(5, 65, 5)] 표현식과 동일합니다.

그만큼__getitem__>매직 메소드는 일반적으로 목록 인덱싱, 사전 조회 또는 값 범위 액세스에 사용됩니다. 얼마나 다재다능한지를 고려하면 아마도 Python에서 가장 활용도가 낮은 매직 메소드 중 하나일 것입니다.