Получить атрибут объекта по его имени
Пожалуйста, подскажите как это сделать правильно?
sel_list = ['Период', 'Доход']
query = connects.V83.NewObject("Query", query) # Выполняем запрос к базе 1С
sel = query.Execute().Choose()
while sel.next():
print(sel.Период) # Рабочий вариант но не подходит
print(sel.Доход) # Так как вручную указывать не вариант
print(sel.sel_list[0] # Нужен примерно такой вариант
print(sel.sel_list[1]
Я понимаю, что пытаюсь к объекту дописать строку но мне это очень нужно. Как это правильно сделать??
Ответы (3 шт):
Автор решения: Интик
→ Ссылка
#дано
class c():
def __init__(self):
self.period=55
self.dohod=77
sel=c()
sel_list=['period','dohod']
#само решение
for item in sel_list:
stroka='print(sel.{})'.format(item)
eval(stroka)
протестрировал, работало.
Автор решения: Danis
→ Ссылка
cmd = 'print(sel.{})'.format(sel_list[0])
eval(cmd)
Но знайте, Функция eval это опасная штука
Автор решения: Xander
→ Ссылка
Ох уж эти советчики. Не слушайте тех, кто советует использовать eval в ситуации, когда есть нормальное решение.
print(getattr(sel, sel_list[0]))