substring变量名python

gre*_*reg 3 python variables eval

我有这样的变量:

self.lamp_1
self.lamp_2
self.lamp_3
self.lamp_4
Run Code Online (Sandbox Code Playgroud)

现在我想使用这个名称中的每一个循环来自动调用它们,如下所示:

for i in range(1,5):
    self.canvas.itemconfig(self.lamp_/number_i_automaticly/, fill=self.color_blink)
Run Code Online (Sandbox Code Playgroud)

我尝试使用函数eval()但它不起作用.它停止运行我的程序.

eval("self.canvas.itemconfig(self.lamp_"+str(i)+",fill=self.color_blink)")
Run Code Online (Sandbox Code Playgroud)

如何使用密钥i以这种方式解析变量名称?

Sve*_*ach 8

使用列表而不是索引变量名称:

self.lamps = [lamp_1, lamp_2, lamp_3, lamp_4]
Run Code Online (Sandbox Code Playgroud)

如果你坚持使用索引变量名(你不应该),你可以使用getattr():

for i in range(1, 5):
    self.canvas.itemconfig(getattr(self, "lamp_%i" % i), 
                           fill=self.color_blink)
Run Code Online (Sandbox Code Playgroud)