Предположим, у меня есть,
class example(object)
def __init__(var1 = 10, var2 = 15, var3 = 5)
do a few things here
Other methods here
Есть другие классы, которые не имеют отношения к вопросу.
Чтобы изучить поведение системы, я изменяю входные данные в методе __init__
выше, по одному за раз. У меня есть другая функция start_simulation
, которая принимает имя входа, которое я хочу изменить как string
, и его возможные значения. (Он использует это имя и значения для создания имен файлов, в которых хранятся результаты выполнения). Например, у меня есть
def start_simulation(var_under_study, var_under_study_values):
'''type of var_under_study: string'''
for value in var_under_study_values:
example_instance = example(var_under_study = value)
# I have to specify the var_under_study manually in this line.
# If it is var1, I have to manually type var1 here.
# I want to know if there is a way so that once I specify
# the string var_under_study in the argument of the
# start_simulation function, this line takes that and sets the
# variable with that name to the specified value.
other stuff here
Я вызываю эту функцию в другом месте, написав
start_simulation(var_under_study = 'var1', var_under_study_values = [5, 15, 20])
Теперь, если я хочу изучить эффекты var2
, я должен указать это в аргументах функции start_simulation:
start_simulation(var_under_study = 'var2', var_under_study_values = [5, 15, 20])
но мне также нужно вернуться туда, где определена функция, и изменить аргумент в строке example_instance = example(var_under_study = value)
. Например, вместо example_instance = example(var1 = value)
я должен написать:
example_instance = example(var2 = value)
Есть ли способ, которым я могу просто указать переменную в
start_simulation(var_under_study = 'var2', var_under_study_values = [5, 15, 20])
и имеют
example_instance = example(var1 = value)
строка учитывает это.
Спасибо за вашу помощь. Пожалуйста, дайте мне знать, если я могу уточнить. Я стараюсь не менять одну и ту же / похожую вещь в нескольких местах, чтобы не получить неправильные результаты, потому что я забыл ее где-то изменить.