[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가지 작업을 말씀하시는 것일 텐데.. 둘 다 (특히 파이썬에서는) 영 권장하고 싶지 않은 작업입니다.
실제로 하고자 하시는 작업이 뭔지 궁금합니다. 만약 그것이:
- 재료명, 그 수량을 속성으로 갖는 객체를 몇 개 생성한다.
- 생성된 객체들의 수량 총합을 알려준다.
라면...
# 테스트 안해봄 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))
이정도면 충분할 거 같거든요.
댓글 입력