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)
를 하면 characters
에 i
가 변수가 아닌 문자열로 추가됩니다.
질문1: characters
에 setattr(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를 호출하는 방법')
댓글 입력