Я пытаюсь определить атрибут во вложенном классе, а затем получить к нему доступ позже, используя строку или, возможно, список строк.Вот код для того, что я пытаюсь сделать
class MyNestedClass(object):
def __init__(self):
self.att1 = 5.
class MyClass(object):
def __init__(self):
self.my_nested_inst = MyNestedClass()
my_inst = MyClass()
Я хочу изменить значение my_inst.my_nested_inst.att1
, когда у меня есть только такой список: my_list = ['my_inst','my_nested_inst','att1']
.
Если я использую это:
vars(vars(vars()[my_list[0]])[my_list[1]])[my_list[2]]
Это работает, но проблема в том, что мне нужно расширить его до произвольной глубины вложенных экземпляров.Я не могу найти хороший способ сделать это с помощью цикла for.Любая помощь очень ценится.
Также обратите внимание, что преобразование строки в имя переменной в глобальном пространстве имен хорошо решено, но, похоже, ни один из ответов здесь не применим.
РЕДАКТИРОВАТЬ1: Я попытаюсь объяснить, почему я делаю это, и дайте мне знать, если я делаю плохую работу объяснения.Я использую scipy.optimize.fmin, и я использую только 4 параметра для оптимизации.Однако теперь я хочу расширить свой код оптимизации для обработки произвольного числа параметров, некоторые из которых являются вложенными атрибутами нескольких слоев в иерархии класса / экземпляра.Я хочу иметь возможность создать список или словарь на верхнем уровне, чтобы сообщить fmin, как распаковать массив параметров для установки вложенных атрибутов.