Re: 심사 문제 39.7 질문 드립니다.
, 도장_ 관리자님이 작성__iter__, __next__로 만드는 것은 이터레이터이고,
__getitem__으로 만드는 것은 인덱스로 접근하는 것입니다.
[] 첨자 연산자로 접근할 수 있는 항목을 만들고 싶다면 __getitem__을 정의하고,
이터레이터로 만드는 것은 __iter__, __next__입니다.
39.7 심사문제에서 TimeIterator(start, stop)[index]처럼 쓰고 있다면 __getitem__을 정의하는 게 필요하다는 뜻입니다.
start, stop으로 값을 전달하고 있으니까 초기화가 필요하니 __init__을 정의하는 게 필요합니다.
심사문제는 __init__과 __getitem__만 정의하면 풀 수 있습니다.
__iter__, __next__는 필요하지 않습니다.
[index] 첨자를 사용하고 있기 때문에 __iter__, __next__로는 심사문제를 통과할 수 없습니다.__iter__, __next__를 정의하고 동작하는 방식으로 심사를 통과했지만, __getitem__을 올바르게 구현했다면 심사문제 통과에는 필요하지 않습니다. __iter__, __next__는 없어도 됩니다.
return
'{0:02d}:{1:02d}:{2:02d}'.format(hour, minute, second)
이와 같은 형태로 값을 반환하는 이터레이터면 충분합니다.포럼 상단 고정인 파이썬 시각화를 이용해서 단계별로 실행하면서 파이썬 내부 동작을 살펴보는 게 이해에 도움이 될 겁니다.