在Python中插入索引到变量名中

-1 投票
3 回答
1593 浏览
提问于 2025-04-20 01:50

有没有人知道我怎么能在变量名中插入索引?下面,我想把self.rpt1.IsBridge中的1替换成来自循环中的索引,这样就能变成rpt1rpt2rpt3rpt4。这些都是变量名,而不是像rpt[n]这样的数组。

for i in range(1, 5):                
    Log.Print("(Summary) Rpt IsUp = %X"%self.rpt1.IsUp)

3 个回答

0

你可以使用 eval 这个功能:

for i in range(1, 5):                
    Log.Print("(Summary) Rpt IsUp = %X" % eval("self.rpt%d.IsUp"%i))

不过,这个方法其实不太好,跟用数组比起来更糟糕。只有在你没有其他选择的时候才可以用这个,实际上这种情况很少发生,几乎不会遇到。

1

这不是一个特别标准的做法,但你可以这样做:

for i in range(1,5):
  Log.Print("(Summary) Rpt IsUp = %X" % getattr(self, 'rpt%s' % i).IsUp)

这里用到了 getattr,它的作用是查找第一个参数对象上的某个属性。

4

与其使用一系列相关的变量,不如用一个列表。

self.rpts = [ ... ]

然后

for rpt in self.rpts:
    Log.Print("(Summary) Rpt IsUp = %X"%(rpt.IsUp))

不要在变量名中编码数据。

(在C语言中也是一样,建议使用指针数组,而不是固定数量的指针。)

撰写回答