TypeError: 'Color' object is not subscriptable
- BaseModel을 상속받은 클래스의 인스턴스를 리스트나 딕셔너리와 같은 방식으로 인덱실 할 때 발생하는 에러
- 필드에 접근할 때 속성(attribute)접근 방식을 사용해야 합니다.
주요 원인
- enumerate < 리스트나 튜플과 같이 순서가 있는(iterable) 객체에 사용 가능합니다
- 인스턴스는 일반적으로 이러한 방식으로 반복할 수 없습니다.
해결법
- 'Color' 클래스의 각 필드에 직접 접근해야 합니다.
- 인스턴스의 속성으로 리스트를 만들고 enumerate를 사용할 수 있습니다
오류가 발생한 코드
def func0(item_colors : Color):
for idx, i in enumerate(item_colors):
pass
개선된 코드
def func1(item_colors: Color):
colors = [item_colors.outer, item_colors.top, item_colors.bottom, item_colors.item]
for idx, color_name in enumerate(colors):
pass