在python中调用字符串作为变量
我在python中创建了一个名为SignalParam的类,该类包含不同的属性(频率、电压、时间等) 我想创建许多这种类型的实例在python中调用字符串作为变量,python,string,variables,Python,String,Variables,我在python中创建了一个名为SignalParam的类,该类包含不同的属性(频率、电压、时间等) 我想创建许多这种类型的实例 vars()['Segment'+str(segment_number)] = SignalParam() 这行正在运行,我可以创建变量“Segment1”、“Segment2” 我的问题是:我想把这些变量称为 "Segment"+segment_number.freqency=33 在这里使用字典可能更好。用段={}定义一个。然后,您可以通过在字典中键入段号来创
vars()['Segment'+str(segment_number)] = SignalParam()
这行正在运行,我可以创建变量“Segment1”、“Segment2”
我的问题是:我想把这些变量称为
"Segment"+segment_number.freqency=33
在这里使用字典可能更好。用
段={}
定义一个。然后,您可以通过在字典中键入段号来创建SignalParam
:
segments[segment_number] = SignalParam()
然后像这样使用对象:
segments[segment_number].frequency = 33
这是不好的风格。改为使用字典和简单键访问:
d = {}
d['Segment'+str(segment_number)] = SignalParam()
d['Segment'+str(segment_number)].frequency = 33
您不应该使用
vars
的原因是,这意味着您要创建全局变量,您应该避免这样做。鉴于您的访问方式,您甚至不需要它。不是最安全的解决方案,但您可以使用exec:
exec("Segment"+segment_number+".frequency=33")
这似乎更适合作为字典。为什么不将键值设置为一个像上面所说的那样构造的字符串呢
my_dict[“Segment”+Segment_number.frequency]=33
最好忘记存在exec
。在我学习python的15年中,我发现2.3版本的合法性在元编程中有着深刻的应用。这就像给一个蹒跚学步的孩子一把加特林枪。不知道它是做什么的,但很有趣…迪茨,你有合法用途的链接吗?我很好奇,作为一个以前蹒跚学步的孩子,他不再认为盖特枪有任何用处。@AlexanderHuszagh我记得这是一个:重新创建一个修饰函数的签名,这样你就可以得到正确的错误消息