有谁知道如何在变量名中插入索引?下面,我希望“self.rpt1.IsBridge
”中的1
来自for循环中的索引,而不是rpt1
,因此它将是rpt1
,rpt2
,{ {1}}和rpt3
。所有变量名称都不是像rpt [n]
rpt4
答案 0 :(得分:4)
使用列表而不是一系列相关变量。
self.rpts = [ ... ]
然后
for rpt in self.rpts:
Log.Print("(Summary) Rpt IsUp = %X"%(rpt.IsUp))
请勿对变量名称中的数据进行编码。
(在C中没有什么不同,你更喜欢使用指针数组而不是一组固定的指针。)
答案 1 :(得分:1)
这不是一个超标准的东西,但你可以做到以下几点:
for i in range(1,5):
Log.Print("(Summary) Rpt IsUp = %X" % getattr(self, 'rpt%s' % i).IsUp)
这使用getattr在第一个参数中查找对象的属性。
答案 2 :(得分:0)
您可以使用eval
:
for i in range(1, 5):
Log.Print("(Summary) Rpt IsUp = %X" % eval("self.rpt%d.IsUp"%i))
(与使用数组相比,这是一个坏主意。只有当你没有选择时,很少 - 从不? - 发生。)