[Python] 문자열을 변수명으로 가져올 수 있을까요?

조회수 2601회
class item:
    def __init__(self, name, value=0):
        self.name = name
        self.value = value

ClassitemRice = item("Rice", 2)

tradeItemSelect = ["Rice","# 이후 여러가지 재료들..."]
for i in range(len(tradeItemSelect)):
    itemCount = 'item_{}'.format(tradeItemSelect[i]) # 가져오고 싶은 값 (그냥 변수)
    itemName = 'Classitem{}'.format(tradeItemSelect[i]).name # 가져오고 싶은 값 (클래스)

제가 하고 싶은 것은 Classitem{}.name의 값을 for문을 통해 가져오고 싶습니다.

파이썬에 대해 잘 모르다 보니 검색하면서 해보고 있지만, 이렇게 입력을 하게 되면

'Classitem{}'.format(tradeItemSelect[i]).name 자체가 문자열로 인식이 되어 값을 가져올 수가 없습니다.

exec나, getattr는 비슷한 듯 하나 조금 다른 것 같습니다.

어떻게 해야 for문을 통해 item_{}의 변수값와 Classitem{}.name의 값을 가져올 수 있을까요?

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

1 답변

  • 문자열을 변수명으로 가져온다는 건 말하자면 (1) 문자열 보간을 하여 (2) 그 문자열을 가지고 클래스 속성을 얻는다는 2가지 작업을 말씀하시는 것일 텐데.. 둘 다 (특히 파이썬에서는) 영 권장하고 싶지 않은 작업입니다.

    실제로 하고자 하시는 작업이 뭔지 궁금합니다. 만약 그것이:

    1. 재료명, 그 수량을 속성으로 갖는 객체를 몇 개 생성한다.
    2. 생성된 객체들의 수량 총합을 알려준다.

    라면...

    # 테스트 안해봄
    totalAmount = 0
    ingredients = []
    ingredients.push(item('Rice', 2))
    ingredients.push(item('Soy Sauce', 0.25))
    
    for i in ingredients :
        totalAmount += i.value # <-- 핵심
    print("간장밥 totalAmount: " + str(totalAmount))
    

    이정도면 충분할 거 같거든요.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)