파이썬 문자열을 변수명으로 변환하기

조회수 1700회

안녕하세요. ^^

어떠한 프로그램을 만들다가, "인자로 전달받은 문자열을 self.변수로 치환할 수 있을까?" 라는 궁금함이 생겨서 질문을 드립니다.

가령 이런 경우입니다.

def a(self, string) :
    self.string = {
    ~~~~~~~~
    }

a('hello')

굉장히 생략한 내용이지만, 의도는 전달한 인수를 그대로 변수화를 시킬수 있는가입니다.

a('hello') 로 string 에 문자열 'hello' 를 전달한 후, 그걸 string 자리에 꽂아넣어 최종적으로 self.hello 라는 변수의 이름을 만들수 있는가 입니다.

이게 파이썬 내부에서 과연 가능한건지 정말 궁금합니다.

질문에 관심가져주신 모든 분께 감사드리며, 아무쪼록 좋은 답변 기다리고 있겠습니다. 감사합니다 ^^

2 답변

  • 어거지로 하는 방법이 있지만, 그런 은 하지 마세요.

    • reflect, exec, eval 같은 내용의 문서와 참고자료들은 구글을 통해 많이 찾아보았습니다. (윽, 댓글은 엔터가 안먹네요;;) 다들 않좋은 방법이다 라고 말씀들은 하시는데, 위에 기술한 내용들 외에는 따로 획기적이거나 자체적으로 할수 있는 다른 방법은 정녕 없는건가요....? (프로필에 질문하면서 울지 말라고 말씀하셨는데 방법이 없다면 울고 싶네요 ㅠㅠ) 알 수 없는 사용자 2021.5.21 13:07
    • 저도 대원님 답변에 동의하고요 만약에 임의 문자열을 기반으로 데이터를 보관하고싶으시면 딕셔너리 활용하시는게 옳다고 봅니다 김호원 2021.5.21 13:33
    • 3일정도를 기다려봤는데, 추가적인 답변이 없는걸 보니 다른분들도 별다른 방법이 없는듯 하네요 ^^;; 답변주신 daewon님 및 호원님 감사합니다 ^^ 알 수 없는 사용자 2021.5.23 20:36
  • 이미 채택된 질문이지만, 답변이 이상해보여서 글 작성합니다.

    setattr를 사용하시면 되겠네요.

    class Dynamic:
        def set_attribute(self, string):
            setattr(self, string, {"hello": "world"})
    
    
    d = Dynamic()
    d.set_attribute("hello")
    print(d.hello)  # {'hello': 'world'}
    
    d.set_attribute("world")
    print(d.world)  # {'hello': 'world'}
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)