当前位置:  开发笔记 > 编程语言 > 正文

在Python中使用Eval创建类变量

如何解决《在Python中使用Eval创建类变量》经验,为你挑选了1个好方法。

我写了一个类,让我传入变量类型,变量名,提示和默认值的列表.该类创建一个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,很少需要在Python中使用exec.这种方法有问题吗?有没有更好的方法来创建一个类,该类包含应该组合在一起的变量,您希望能够编辑,还有用于显示,编辑的代码和wxPython调用(并且还将所有变量保存到文件中)还是再读一遍)?

生硬的



1> mipadi..:

您可以使用该setattr函数,该函数有三个参数:对象,属性的名称及其值.例如,

setattr(self, 'wavelength', wavelength_val)

相当于:

self.wavelength = wavelength_val

所以你可以这样做:

for variable in self.variable_list:
       var_type,var_text_ctrl,var_name = variable
       if var_type == 'f' :
           setattr(self, var_name, var_text_ctrl.GetValue())

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有