gpt4 book ai didi

python - 优化 python 代码以处理对象名称

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:16 24 4
gpt4 key购买 nike

我有一个包含 16 个正方形的 pygtk 表,每个正方形都包含一个标签。标签名称为:label1、label2、label3、...、label16。

我还有一个每 n 秒触发一次的计时器。当计时器启动时,其中一个方 block 会突出显示(只需将其字体大小设置为 18,将其余方 block 的字体大小设置为 12)。

如果只有 3 个标签,代码将是这样的:

def update_grid(self):
if self.timer_id is not None:
self.__actual_choice = (self.__actual_choice % 16)+1
if self.__actual_choice == 1:
self.label1.modify_font(self.__font_big)
self.label2.modify_font(self.__font_small)
self.label3.modify_font(self.__font_small)
elif self.__actual_choice == 2:
self.label1.modify_font(self.__font_small)
self.label2.modify_font(self.__font_big)
self.label3.modify_font(self.__font_small)
elif self.__actual_choice == 3:
self.label1.modify_font(self.__font_small)
self.label2.modify_font(self.__font_small)
self.label3.modify_font(self.__font_big)

但是如果有 16 个标签,代码会很庞大。我想知道在 python 中是否有一种方法可以做类似的事情:

            self.(label+"i").modify_font(self.__font_small)

最佳答案

可以使用内置函数getattr()正如其他人所建议的那样:

label = getattr(self, 'label%d' % i)
label.modify_font(self.__font_small)

但实际上,最好将 16 个 label 存储在 list 中.结尾有很多数字的变量很糟糕 code smell .

for index, label in enumerate(self.labels):
if index == self.__actual_choice:
label.modify_font(self.__font_big)
else:
label.modify_font(self.__font_small)

关于python - 优化 python 代码以处理对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com