python - setattr 으로 생성된 object를 list에 append 하는 법?

조회수 777회
import pandas as pd

아래의 함수는 class_creation()을 통해 pandas를 통해 생성된 characterDf의 index를 변수명으로 하고 attribute를 characterDf의 value로 하는 object를 생성하는 함수입니다.

def class_creation():
    characters = []
    mod = sys.modules[__name__]
    for i in characterDf_index:
        setattr(mod, i, Characters(i, characterDf))
        characters.append(i)

아래는 참조용 class입니다.

class Characters:
    def __init__(self, c_name, characterDf):
        self.name = c_name
        self.attributes = {}

        for i in characterDf_columns:
            self.attributes[i] = characterDf.loc[c_name, i]

    def show(self):
        print(self.name, ':', self.attributes)

여기서 함수 class_creation에서 characters.append(i)를 하면 charactersi가 변수가 아닌 문자열로 추가됩니다.

질문1: characterssetattr(mod, i, Characters(i, characterDf))을 통해 (비정상적으로?)생성된 object를 문자열이 아닌 object 그 자체로 추가할 수 있을까요?(상당한 양의 object가 추가되어야 하기에 각각의 object를 직접 입력하는 것은 불가능합니다.)

질문2: object가 ___repr__로 자신의 변수명을 알아낼 수 있듯이, 반대로 문자열을 통해서 그 변수를 호출할 수 있나요?

ex:

class test:
    def __init__(self, c_name):
        self.name = c_name


characters = []
character_a = test('a')
character_b = test('b')

for k in ['a', 'b']:
    characters.append(???'k라는 변수명을 가진 object를 호출하는 방법')

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

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

(ಠ_ಠ)
(ಠ‿ಠ)