복붙노트

[PYTHON] 사용자 입력에서 동적으로 명명 된 변수 만들기 [duplicate]

PYTHON

사용자 입력에서 동적으로 명명 된 변수 만들기 [duplicate]

저는 방금 프로그래밍하는 법을 배우는 중이며 Python을 제 1 언어로 배우고 있습니다. 연습으로 주소록 프로그램을 작성하려고합니다. 새 연락처는 명령 프롬프트를 사용하여 사용자가 만듭니다. 새 연락처는 Contacts 클래스의 객체 인스턴스입니다.

코드에서 클래스 객체를 인스턴스화하는 방법을 알고 있지만 사용자 입력을 기반으로 변수 이름을 사용하여 클래스 객체를 만드는 방법은 무엇입니까? 사용자에게 이름을 묻는 메시지를 표시합니다.이 정보를 가져 와서 새 객체의 변수 이름으로 사용하려면 어떻게해야합니까?

감사!!

해결법

  1. ==============================

    1.의견을 통해 여기서 한 번 이상 물어 오는 것에 대해 묻고 있습니다. "어떻게 동적으로 명명 된 변수를 만들 수 있습니까?"

    의견을 통해 여기서 한 번 이상 물어 오는 것에 대해 묻고 있습니다. "어떻게 동적으로 명명 된 변수를 만들 수 있습니까?"

    답변 :하지 마십시오. 문제를 해결할 더 좋은 방법이있을 가능성이 있습니다.

    설명:

    동적으로 명명 된 변수를 만들려면 일단 변수가 만들어지면 제대로 처리 할 수 ​​없습니다. 물론 전역 및 로컬 범위를 확인하여 그 내용을 확인하는 방법이 있습니다. 그러나 사실은 만들어지는 것에 대해 결정적인 통제력을 가져야한다는 것입니다.

    당신이해야 할 일은 사전에 넣는 것입니다 :

    people = {}
    name = raw_input("What name? ") # "person"
    people[name] = User(name)
    
    print people
    # {'person': <User: "person">}
    
    print people.keys()
    # ['person']
    

    이렇게하면 네임 스페이스에 임의의 변수가 생성되지 않습니다. 이제 값으로 키와 객체의 사전이 있습니다. 또한 사용자가 입력 한 변수의 이름 지정을 허용하는 웜의 깡통입니다.

    더 많은 정보를 원하면 같은 주제에 대해 여기에서 검색하고 왜 그렇게해서는 안되는 지 수많은 사례를보십시오. globals () 등을 사용하는 방법을 보여주는 예제가 무엇이든 관계없이 제 조언을 받고 그 경로를 지키지 마십시오. 사랑하고 즐기고 .. 너의 사전을 포옹하고 키스 할 수도있다.

    참고 문헌 :

  2. ==============================

    2.이름이 런타임으로 결정되는 객체를 원하는대로 인스턴스화하려는 이유가 명확하지 않습니다. 그것이 일반적인 관행이 아니라는 것을 깨닫는 것이 중요합니다.

    이름이 런타임으로 결정되는 객체를 원하는대로 인스턴스화하려는 이유가 명확하지 않습니다. 그것이 일반적인 관행이 아니라는 것을 깨닫는 것이 중요합니다.

    하지만 setattr 내장 함수를 사용하는 것이 가능합니다.

    setattr(someobject, name, user)
    

    다소 일반적인 사용은 사전을 사용하는 것입니다. 따라서 하나 이상의 사용자 인스턴스가 있고이를 저장하려면 다음과 같은 사전에 저장할 수 있습니다. 이렇게하면 이름으로 개체를 참조 할 수 있습니다.

    class User(object):
    
        def __init__(self, name):
            self.name = name
    
    
    users = {}
    
    name = raw_input("What name?")
    users[name] = User(name)
    
    
    print users
    print users['Andre'].name
    

    샘플 출력 :

    What name?Andre
    {'Andre': <__main__.User object at 0x7f6b418a8710>}
    Andre
    
  3. from https://stackoverflow.com/questions/11354214/creating-dynamically-named-variables-from-user-input by cc-by-sa and MIT license