私は、変数型、変数名、プロンプト、およびデフォルト値のリストを渡すことができるクラスを作成しました。このクラスはwxPythonパネルを作成します。これはフレームに表示され、計算ボタンを押して結果をプロットとして戻す前に入力値を設定できます。私は、exec文を使ってクラスにすべての変数を追加します。これにより、すべての変数が1つのクラスにまとめられ、名前で参照することができます。PythonでEvalを使用してクラス変数を作成
light = Variables(frame , [ ['f','wavelength','Wavelength (nm)',632.8] ,\
['f','n','Index of Refraction',1.0],])
私が作成したクラス内などでたstatmentsで変数を設定します。私は、変数を使用する必要があるとき、私は名前だけでそれらを参照することができ
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
次に、私は、ほとんどの場合、Pythonでexecを使用する必要がないことを読んでいます。このアプローチに問題はありますか?一緒にグループ化し、編集できるようにする変数を保持するクラスを作成するより良い方法はありますか?また、コードを表示したり、編集したり(そしてすべての変数をファイルに保存するためのwxPythonコールがあります)またはそれらを再び読んで)?
カート
+1。 setattrは、名前がランタイムと呼ばれる属性を設定するために正確に作られました。 –