Я написал класс, который позволяет мне передавать список типов переменных, имен переменных, приглашений и значений по умолчанию. Класс создает панель wxPython, которая отображается во фрейме, который позволяет пользователю установить входные значения, прежде чем нажимать кнопку вычисления и получать результаты обратно в виде графика. Я добавляю все переменные в класс с помощью операторов exec. Это позволяет хранить все переменные в одном классе, и я могу ссылаться на них по имени.
light = Variables( frame , [ ['f','wavelength','Wavelength (nm)',632.8] ,\
['f','n','Index of Refraction',1.0],])
Внутри класса я создаю и устанавливаю переменные с характеристиками, такими как:
for variable in self.variable_list:
var_type,var_text_ctrl,var_name = variable
if var_type == 'f' :
exec( 'self.' + var_name + ' = ' + var_text_ctrl.GetValue() )
Когда мне нужно использовать переменные, я могу просто ссылаться на них по имени:
wl = light.wavelength
n = light.n
Затем я прочитал на SO, что редко возникает необходимость использовать exec в Python. Есть ли проблема с этим подходом? Есть ли лучший способ создать класс, который содержит переменные, которые должны быть сгруппированы вместе, которые вы хотите иметь возможность редактировать, а также имеет вызовы кода и wxPython для отображения, редактирования, (а также сохранения всех переменных в файл или читая их снова)?
Curt