파이썬 반복문 질문입니당

조회수 1874회
#==============================================================
self.label_5.setStyleSheet("QLabel { background-color : white; color : blue; }")
self.label_6.setStyleSheet("QLabel { background-color : white; color : blue; }")
self.label_7.setStyleSheet("QLabel { background-color : white; color : blue; }")
self.label_8.setStyleSheet("QLabel { background-color : white; color : blue; }")
#==============================================================

위의 장문의 코드를 포문을 이용해 아래와 같이 해볼려했는데요

for i in range(5,9):
            self.label_i.setStyleSheet("QLabel { background-color : white; color : blue; }")

보시다시피 변수명에 i를 넣은거라 구문오류가 뜹니다.

포문을 이용해서 맨 위의 긴 코드를 어떻게 줄일 수 있을까요?

2 답변

  • 정석대로라면 부모 위젯에서 자식들의 리스트를 얻고 반복하는 식이 되어야 할 겁니다.

    코드를 보니 사람이 이해하는 소스코드와 컴퓨터가 이해하는 바이너리 코드를 구분 못하는 것 같습니다.

    label_i 는 사람이나 이해할 수 있지 소스코드가 컴파일이 되면 label_i 같은건 없는 겁니다.

    물론 파이썬은 인터프리터 언어라 reflection이 쉽게 가능하긴 합니다.

    getattr(self, 'label_5')    # label_5 필드
    
    for i in range(5, 8):
        getattr(self, 'label_{}'.format(i))
    

    와 같이 할 수 있습니다.

  • 다음에 비슷한 코드를 작성하실 때엔 list 를 활용하시는걸 추천합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)