Re: 심사문제 39.7
, 도장_ 관리자님이 작성UNIT 39.3을 반복 학습하고, 39.7 심사문제 해설을 살펴보는 것을 추천합니다.
인덱스를 사용할 수 없는 객체에 인덱스를 사용할 수 있게 만들어 주는 것이 __getitem__입니다.
리스트에서 a[0]으로 사용할 수 있는 것은 리스트에 __getitem__이 구현되어 있기 때문입니다. a[0]을 사용하면 a.__getitem__(0)이 호출되는 것이죠.
TimeIterator를 만들었는데 map 객체로 만들었습니다. map 객체는 [] 첨자연산자를 사용할 수 없습니다. 그런데 제시된 코드를 보면 TimeIterator(start, stop)으로 map 객체를 만들었고,
TimeIterator(start, stop)[index]처럼 첨자 연산자로 접근하는 것을 알 수 있습니다.
따라서 [index]처럼 사용할 수 있게 __getitem__을 구현해야 합니다.
__getitem__을 구현할 때 index에 따라 어떤 값을 반환할지는 구현자의 선택입니다. [0]을 첫 번째 요소를 반환하는 것으로 만들지, 마지막 요소를 반환하는 것으로 만들지는 전적으로 구현자의 선택 사항이지, __getitem__(0)을 호출했을 때 무조건 첫 번째 원소를 반환해야 한다는 아닙니다.
Re: 심사문제 39.7
, Roh Hyun님이 작성네. 답변을 친절하게 해주셔서 너무 감사합니다.
그럼 이 문제에서는 index 를 마지막 index로 생각하고 해서
총 second 가 self.second+index 가 되는 것 이겠군요!!